Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更新字典,以便;a';值为';c';比';c';附加值';a';?_Python_Loops_Dictionary_Key Value - Fatal编程技术网

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']}