[英]Python: Add Values and Remove Entry for Tuple Permutations in a Dictionary
我有一個字典,其中鍵是一個元組。 這些元組中的一些是彼此的排列(例如(1, 2)
vs (2, 1)
)。 我想將一個排列的值添加到另一個排列,然后擺脫第二個排列。
d = {(1, 3): 14, (1, 4): 13, (1, 2): 10, (11, 11): 19, (3, 1): 50, (4, 1): 5, ...}
應該
{(1, 3): 64, (1, 4): 18, (1, 2): 10, (11, 11): 19, ...}
我考慮過對它們進行排序,然后根據字典中的位置做一些事情,但這不是很容易擴展。 歡迎輸入!
將frozenset
用於dict鍵而不是元組。 然后您可以隨時添加它們,而無需擔心訂購。
正如@wim建議的那樣,你應該使用一個frozenset
,然后你可以使用collections.Counter
和sum
來將值累積到一個新的字典中:
from collections import Counter
d = {(1, 3): 14, (1, 4): 13, (1, 2): 10, (11, 11): 19, (3, 1): 50, (4, 1): 5}
r = sum((Counter({frozenset(k): v}) for k, v in d.items()), Counter())
print(r)
# Counter({frozenset({1, 3}): 64, frozenset({11}): 19, frozenset({1, 4}): 18, frozenset({1, 2}): 10})
如果您希望使用字典理解,您可以將Counter
對象轉換為vanilla dict,並將鍵轉回元組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.