我正在使用此代碼將一個字典合并到另一個 - 如果存在一個鍵,它應該合并兩個字典的值:
source_dict = defaultdict(set)
target_dict = defaultdict(set)
def merge_dict(source_dict, target_dict):
for source_key in source_dict:
if source_key in target_dict:
target_dict[source_key].update(source_dict[source_key])
else:
target_dict[source_key] = source_dict[source_key]
有沒有辦法優化merge_dict上面的功能?例如,使其更簡潔或更高效?
uj5u.com熱心網友回復:
您正在使用defaultdicts。所以你不需要if/else......只要做:
def merge_dict(source_dict, target_dict):
for source_key, source_value in source_dict.items():
target_dict[source_key].update(source_value)
如果source_key不在 中target_dict,將創建一個空集并立即updated。這正是defaultdicts 的用例...
uj5u.com熱心網友回復:
您可以將其寫為理解的更新:
from collections import defaultdict
source_dict = defaultdict(set,{'a':{1,2,3},'b':{4,5,6}})
target_dict = defaultdict(set,{'b':{5,6,7},'c':{8,9}})
target_dict.update((k,s|target_dict[k]) for k,s in source_dict.items())
print(target_dict)
# defaultdict(<class 'set'>, {'b': {4, 5, 6, 7}, 'c': {8, 9}, 'a': {1, 2, 3}})
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/410024.html
標籤:
上一篇:在鍵上的字典串列中合并值
