簡體   English   中英

Python:為詞典中的元組排列添加值和刪除條目

[英]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.Countersum來將值累積到一個新的字典中:

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.

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