簡體   English   中英

將鍵與python中字典中的值匹配

[英]Match keys to values in dictionary in python

例如說這是我的字典:

my_dict= {"0" : {"1","2","3"},"1":{"2"},"2":{"3"}}

我想在每個實例中將這些值和鍵配對在一起。 將每個鍵添加到相應的值鍵中以進行配對的最有效方法是什么。 對不起,如果我的措辭過於混亂。 本質上,我希望它成為:

my_dict={"0" : {"1","2","3"}, "1" : {"0","2"}, "2" : {"0","1","3"}, "3" : {"0","2"}}

這樣,每個數字都以鍵和值的形式配對。 如果仍然不清楚我要問的是什么,請讓我知道,我將嘗試更清楚地解釋。

我可以嘗試解釋的另一種方式是,想象我當前的字典是有向圖中的匹配項,並且我想將其轉換為在無向圖中顯示匹配項。

您可以為此使用collections.defaultdict 范例-

from collections import defaultdict
result = defaultdict(set)
for key,value in my_dict.items():
    result[key].update(value)
    for elem in value:
        result[elem].add(key)

在這里,您將創建一個defaultdict ,其值setset ,然后對於原始詞典中的每個鍵,都將其更新為result defaultdict中的同一鍵。 然后遍歷值(集合)中的每個元素,您將key添加為result defaultdict中元素的值。

演示-

>>> my_dict= {"0" : {"1","2","3"},"1":{"2"},"2":{"3"}}
>>> from collections import defaultdict
>>> from collections import defaultdict
>>> result = defaultdict(set)
>>> for key,value in my_dict.items():
...     result[key].update(value)
...     for elem in value:
...         result[elem].add(key)
...
>>> pprint.pprint(result)
{'0': {'1', '2', '3'},
 '1': {'2', '0'},
 '2': {'0', '1', '3'},
 '3': {'2', '0'}}

暫無
暫無

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

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