Python 如何更新字典,以便;a';值为';c';比';c';附加值';a';?
如果键Python 如何更新字典,以便;a';值为';c';比';c';附加值';a';?,python,loops,dictionary,key-value,Python,Loops,Dictionary,Key Value,如果键'a'的值为'c',则'c'的键应附加'a'。请注意,与键'a'关联的值不包括在追加中 我似乎不知道如何在大型词典上自动执行此过程 mydict = { 'a': ['z', 'c'], 'b': ['y', 'c'], 'c': ['q', 'r'] } 以下是我想要的结果: mydict = { 'a': ['z', 'c'], 'b': ['y', 'c'], 'c': ['q', 'r', 'a', 'b'] } 这里是另一种方法,使用集合交点,以及保持父/子关系的中间映射 f
'a'
的值为'c'
,则'c'
的键应附加'a'
。请注意,与键'a'
关联的值不包括在追加中
我似乎不知道如何在大型词典上自动执行此过程
mydict = {
'a': ['z', 'c'],
'b': ['y', 'c'],
'c': ['q', 'r']
}
以下是我想要的结果:
mydict = {
'a': ['z', 'c'],
'b': ['y', 'c'],
'c': ['q', 'r', 'a', 'b']
}
这里是另一种方法,使用集合交点,以及保持父/子关系的中间映射
from collections import defaultdict
d = defaultdict(list)
keys = set([*mydict])
for k, v in mydict.items():
intersected = keys & set(v)
for i in intersected:
d[i].append(k)
print(d)
# defaultdict(list, {'c': ['b', 'a']})
for found, value in d.items():
mydict[found].extend(value)
print(mydict)
# {'a': ['z', 'c'], 'b': ['y', 'c'], 'c': ['q', 'r', 'b', 'a']}
不是这些值,而是您在添加键?请给您的代码添加一些解释,以便其他人可以从中学习为什么
set([*mydict])
而不是set(mydict)
?没有意识到这也会提供键
from collections import defaultdict
d = defaultdict(list)
keys = set([*mydict])
for k, v in mydict.items():
intersected = keys & set(v)
for i in intersected:
d[i].append(k)
print(d)
# defaultdict(list, {'c': ['b', 'a']})
for found, value in d.items():
mydict[found].extend(value)
print(mydict)
# {'a': ['z', 'c'], 'b': ['y', 'c'], 'c': ['q', 'r', 'b', 'a']}