簡體   English   中英

在字典中自動增加相同的值

[英]Auto increment same values in dictionary

我有一本字典:

{'someKey1': 1, 'someKey2': 1, 'someKey3': 1, 'someKey4': 3, 'someKey5': 4, 'someKey6': 4, 'someKey7': 2}

我試圖獲取的 Output 是一個具有自動遞增值的字典,如下所示:

{'someKey1': 1, 'someKey2': 2, 'someKey3': 3, 'someKey4': 5, 'someKey5': 7, 'someKey6': 6, 'someKey7': 4}

someKey1 - someKey3 中的值只要它們在 1-3 中就無關緊要,這意味着 someKey1 值可以是 3 但 3 不能在 dict 中再次作為值重復。

基本上第一個dict(是的,它必須是一個dict)包含鍵的順序,但順序可以重復,因此我想再次訂購自動增量。

進一步說明:我在前端有一個 js object,其中包含表中的列名作為鍵,並且在前端用戶可以選擇哪一列應該按什么順序排列。 因此,“somekey”實際上是列名,而數字是該列應該放置的位置。 多個鍵具有相同數字的事情是用戶可以將一列拆分為多列。 因此,只要它們在同一個括號中,我就不關心順序,例如 someKey1-3 必須在位置 1-3,因為它們的值是 1。

您的結果表明原始值用作新序列的分配順序。 但是,具有相同初始值的鍵的分配存在隨機性因素,我無法從您的解釋中弄清楚。 即為什么 someKey1 和 someKey2 接收 1 和 2 而 someKey5 和 someKey6 以降序獲得它們的新值(7 和 6)。

所以我能得出的最接近的結果是:

dict1 = {'someKey1': 1, 'someKey2': 1, 'someKey3': 1, 'someKey4': 3, 'someKey5': 4, 'someKey6': 4, 'someKey7': 2}


dict2 = { k:v for v,(k,_) in enumerate(sorted(dict1.items(),key=lambda kv:kv[1]),1) }
            

print(dict(sorted(dict2.items()))) # printed in key order to facilitate comparison

{'someKey1': 1, 'someKey2': 2, 'someKey3': 3, 'someKey4': 5, 'someKey5': 6, 'someKey6': 7, 'someKey7': 4}

如果您真的不關心賦予最初具有相同值的鍵的值,那應該沒問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM