繁体   English   中英

Python 用另一个字典更新字典值列表

[英]Python update dictionary value list with another dictionary

我有以下字典:

dict1 = {'key1': ['val1', 'val2', 'val3'], 'key2': ['val3', 'val4']}
dict2 = {'val1': ['a', 'b'], 'val3': ['c', 'd']}

如何从dict2更新dict1中的值以获得以下更新的dict1

{'key1': ['a', 'b', 'val2', 'c', 'd'], 'key2': ['c', 'd', 'val4']}  

您可以遍历每对第一个 dict 并用dict2中指向的列表替换每个值(如果存在),否则保留该值。 这可以用dict.get很好地完成,它将返回要使用的新值列表或[value]这是实际值

dict1 = {'key1': ['val1', 'val2', 'val3'], 'key2': ['val3', 'val4']}
dict2 = {'val1': ['a', 'b'], 'val3': ['c', 'd']}

for key, values in dict1.items():
    new_values = []
    for value in values:
        new_values.extend(dict2.get(value, [value]))
    dict1[key] = new_values

print(dict1)  # {'key1': ['a', 'b', 'val2', 'c', 'd'], 'key2': ['c', 'd', 'val4']}

您可以使用嵌套理解:

dict1 = {'key1': ['val1', 'val2', 'val3'], 'key2': ['val3', 'val4']}
dict2 = {'val1': ['a', 'b'], 'val3': ['c', 'd']}

dict1 = { k1:[v2 for v1 in values1 for v2 in dict2.get(v1,[v1])] 
          for k1,values1 in dict1.items()}

print(dict1)
{'key1': ['a', 'b', 'val2', 'c', 'd'], 'key2': ['c', 'd', 'val4']}

暂无
暂无

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

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