簡體   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