簡體   English   中英

如何在不覆蓋數據的情況下合並兩個具有相同鍵的字典?

[英]How to merge two dictionaries with the same keys without overwriting data?

我有一個任務,我需要拿兩個 csv 並將其中的信息轉換成兩個字典。 兩個字典的鍵是相同的,我只需要將一本字典中的信息添加到鍵中而不是覆蓋。 例子:

dictionary 1 - 'key1' : ['place1' , 'web address', 'phone number']

dictionary 2 - 'key1' : ['place2', 'different web address', 'different phone number']

我希望最終的字典看起來像這樣:

finalDictionary - 'key1' : [['place1' , 'web address', 'phone number'], ['place2', 'different web address', 'different phone number']]  

我會使用defaultdict並遍歷 dict 中的所有鍵/值,以將所有值附加到最終 dict 中的列表中:

>>> dict1 = {'key1' : ['place1' , 'web address', 'phone number']}
>>> dict2 = {'key1' : ['place2', 'different web address', 'different phone number']}
>>> from collections import defaultdict
>>> final_dict = defaultdict(list)
>>> for d in (dict1, dict2):
...     for k, v in d.items():
...         final_dict[k].append(v)
... 
>>> dict(final_dict)
{'key1': [['place1', 'web address', 'phone number'], ['place2', 'different web address', 'different phone number']]}

只需列出兩個字典中的值即可。 您可以使用字典理解為字典中的所有鍵執行此操作。

finalDictionary = {key: [dictionary1[key], dictionary2[key]] for key in dictionary1}
dct_1 = {'key1' : ['place1' , 'web address', 'phone number']}
dct_2 = {'key1' : ['place2', 'different web address', 'different phone number']}

final_dct = {'key1':[dct['key1'] for dct in [dct_1, dct_2]]}

(或更好)

list_of_dct = [{'key1': [stuff]},
               {'key1': [more stuff]},
              ]
final_dct = {'key1':[dct['key1'] for dct in list_of_dct]}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM