所以...我知道我们可以像这样组合python 3.5中的2个字典:
z = {**x,**y} # x,y are 2 similar dictionaries, with nested entries
但是在这种方法中,将'x'中任何冲突的键值对替换为'y'中的键对值。
我希望冲突的键值对包含x或y中存在的最大数据。
例如:
x = {1:'small_data',2:{1:'random laaaarge data',2:'random small data'}}
y = {1:'laaaaaarge_data',2:{1:'random small data',2:'random laaaarge data'}}
现在
z = {**x,**y}
# DATA in z should be {1:'laaaaaarge_data',2:{1:'random laaaarge data',2:'random laaaarge data'}}
注意 :它应适用于具有大小的任意数据。
这甚至可能吗?如果是这样,最Python的方式是什么。
答案 0 :(得分:1)
为什么不这样:
def merge_dicts(dict_list):
merged = {}
for sub_dict in dict_list:
for key, value in sub_dict.items():
if key in merged:
merged[key] = get_biggest(merged[key], value)
else:
merged[key] = value
return merged
def get_biggest(*items):
# function for comparing your 2 items based on your "size" requirements
return biggest