有没有更好的方法来合并两个集合的字典?
Is there a better way to merge two dicts of sets?
我正在使用这段代码将一个字典合并到另一个字典中 - 如果存在一个键,它应该合并两个字典中的值:
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
功能?比如为了更简洁或者更高效?
您正在使用 defaultdict
s。所以你不需要 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
中,将创建一个空集并立即 update
d。这正是 defaultdict
s...
的用例
您可以将其写为理解的更新:
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}})
我正在使用这段代码将一个字典合并到另一个字典中 - 如果存在一个键,它应该合并两个字典中的值:
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
功能?比如为了更简洁或者更高效?
您正在使用 defaultdict
s。所以你不需要 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
中,将创建一个空集并立即 update
d。这正是 defaultdict
s...
您可以将其写为理解的更新:
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}})