繁体   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