gpt4 book ai didi

python - 合并两个 python 字典并在新更新的字典中保留最大键 val

转载 作者:行者123 更新时间:2023-12-01 21:59:03 25 4
gpt4 key购买 nike

我需要一种方法,当其中一个键和值都在两个字典中时,我可以合并两个字典并保持最大值。

dict_a 将“A”、“B”、“C”映射到 3、2、6

dict_b 将“B”、“C”、“D”映射到 7、4、1

final_dict 将“A”、“B”、“C”、“D”映射到 3、7、6、1

我确实完成了一半的工作,但我没有弄清楚如何保持“C”键值对的最大值。

使用 itertools chain() 或 update()。

最佳答案

好的,所以这可以通过创建所有可能键的并集来实现 dict_a.keys() | dict_b.keys(),然后使用 dict.get,如果 key 不存在(而不是抛出错误),默认返回 None。然后我们取 max(不是 None 的那个)。

def none_max(a, b):
if a is None:
return b
if b is None:
return a
return max(a, b)

def max_dict(dict_a, dict_b):
all_keys = dict_a.keys() | dict_b.keys()
return {k: none_max(dict_a.get(k), dict_b.get(k)) for k in all_keys}

请注意,这将适用于任何可比较的值——许多其他答案对于负数或零都失败。


例子:输入:

dict_a = {'a': 3, 'b': 2, 'c': 6}

dict_b = {'b': 7, 'c': 4, 'd': 1}

输出:

max_dict(dict_a, dict_b)  # == {'b': 7, 'c': 6, 'd': 1, 'a': 3}

关于python - 合并两个 python 字典并在新更新的字典中保留最大键 val,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54420664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com