Python3-将字典与现有键值对组合

时间:2018-08-16 17:18:31

标签: python-3.x dictionary

所以...我知道我们可以像这样组合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的方式是什么。

1 个答案:

答案 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