如何更新字典,以便如果键'a'的值为'c'而不是'c'的键,则附加值'a'?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何更新字典,以便如果键'a'的值为'c'而不是'c'的键,则附加值'a'?相关的知识,希望对你有一定的参考价值。

如果密钥'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']}
另一答案
for k in mydict:
    for val in mydict[k]:
        if val in mydict:
            mydict[val] += [k]

以上是关于如何更新字典,以便如果键'a'的值为'c'而不是'c'的键,则附加值'a'?的主要内容,如果未能解决你的问题,请参考以下文章

python中字典的排序

python入门:字典

猿编程怎么替换字典里的值

python 如何对嵌套字典里的数据进行添加和删除?

python字典的基本操作

python 怎么取出counter的字典