我是一个初学者,在比较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
)中。
答案 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)