比较2个字典值并将最大值添加到第3个字典

时间:2020-04-14 14:59:03

标签: python

我是一个初学者,在比较2个字典的键中的值和打印第三个字典的值时遇到问题。

两个词典按如下方式打印玩家的状态。

player_stats1 = {'Hits':'230', 'AVG': '.304', 'HR':'235', 'SB':'10', 'RBI':'101' }
player_stats2 = {'Hits':'163', 'AVG': '.265', 'HR':'567', 'SB':'45', 'RBI':'65'}

我想从每个键中获取最高的值并将其添加到空白字典(player_statswin)中。

3 个答案:

答案 0 :(得分:0)

尝试一下:

player_stats1 = {'Hits':'230', 'AVG': '.304', 'HR':'235', 'SB':'10', 'RBI':'101' }
player_stats2 = {'Hits':'163', 'AVG': '.265', 'HR':'567', 'SB':'45', 'RBI':'65'}

player_statswin = {k:max(float(v),float(player_stats2[k])) for k,v in player_stats1.items()}

答案 1 :(得分:0)

如果两个字典始终具有完全相同的键(没有丢失的键),则可以使用字典理解:

player_stats1 = {'Hits':'230', 'AVG': '0.304', 'HR':'235', 'SB':'10', 'RBI':'101' }
player_stats2 = {'Hits':'163', 'AVG': '0.265', 'HR':'567', 'SB':'45', 'RBI':'65'}

player_statswin = { k:max(map(float,(v1,player_stats2[k]))) for k,v1 in player_stats1.items() }

print(player_statswin)
# {'Hits': 230.0, 'AVG': 0.304, 'HR': 567.0, 'SB': 45.0, 'RBI': 101.0}

如果可以有不同/缺失的键,则需要将它们合并:

player_statswin = dict(sorted((*player_stats1.items(),*player_stats2.items()),key=lambda kv:float(kv[1])))

print(player_statswin)
# {'AVG': '0.304', 'SB': '45', 'RBI': '101', 'Hits': '230', 'HR': '567'}

顺便说一句,您应该将值存储为int / floats而不是字符串。这样可以减少整个代码中的float转换次数

答案 2 :(得分:-1)

首先,您必须像这样从字典中提取键:

dict.keys()

然后使用max方法提取2个值中的最大值,并将该值放入新字典中:

max(value, value)