繁体   English   中英

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

[英]How can I update a dictionary so that if key 'a' has a value of 'c' than the key of 'c' appends the value '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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM