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

Python 比较2个字典值并将最大值添加到第3个字典,python,Python,我是一个初学者,在比较两本字典的键值和打印到第三本字典时遇到了一个问题 两个字典打印了一个玩家的数据,如下所示 player_stats1 = {'Hits':'230', 'AVG': '.304', 'HR':'235', 'SB':'10', 'RBI':'101' } player_stats2 = {'Hits':'163', 'AVG': '.265', 'HR':'567', 'SB':'45', 'RBI':'65'} 我想从每个键中提取最高值,并将它们添加到一个空白字典(pl

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

两个字典打印了一个玩家的数据,如下所示

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\u statswin
)。

尝试以下操作:

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()}


首先,您必须从字典中提取关键字,如:

dict.keys()
然后使用最大值方法提取2个值中的最大值,并将该值放入新词汇表中:

max(值,值)

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

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/float而不是字符串。这将减少代码中的浮点转换次数

问题出在哪里?很乐意帮助:)