比如说这是我的字典:
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"}}
这样,每个数字都以键和值形式配对。如果我还不清楚我在问什么,请告诉我,我会尽力解释清楚。
我可以尝试解释它的另一种方式是将我当前的字典想象为有向图中的匹配,并且我想将其转换为在无向图中显示匹配。
答案 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
,其值为set
,然后对于原始词典中的每个键,更新result
defaultdict中相同键的内容。然后迭代值(set)中的每个元素,将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'}}