3 回答

TA贡献1850条经验 获得超11个赞
这应该这样做:
pokemon_total = {}
for player, dictionary in pokemon_go_data.items():
for pokemon, candy_count in dictionary.items():
if pokemon in pokemon_total.keys():
pokemon_total[pokemon] += candy_count
else:
pokemon_total[pokemon] = candy_count
most_common_pokemon = max(pokemon_total, key=pokemon_total.get)
print(most_common_pokemon)

TA贡献1829条经验 获得超4个赞
T 刚刚这样做对我有用,并给出了正确的答案'Rattata'
pokemon_go_data = {'bentspoon':
{'Rattata': 203, 'Pidgey': 120, 'Drowzee': 89, 'Squirtle': 35, 'Pikachu': 3, 'Eevee': 34,
'Magikarp': 300, 'Paras': 38},
'Laurne':
{'Pidgey': 169, 'Rattata': 245, 'Squirtle': 9, 'Caterpie': 38, 'Weedle': 97, 'Pikachu': 6,
'Nidoran': 44, 'Clefairy': 15, 'Zubat': 79, 'Dratini': 4},
'picklejarlid':
{'Rattata': 32, 'Drowzee': 15, 'Nidoran': 4, 'Bulbasaur': 3, 'Pidgey': 56, 'Weedle': 21,
'Oddish': 18, 'Magmar': 6, 'Spearow': 14},
'professoroak':
{'Charmander': 11, 'Ponyta': 9, 'Rattata': 107, 'Belsprout': 29, 'Seel': 19, 'Pidgey': 93,
'Shellder': 43, 'Drowzee': 245, 'Tauros': 18, 'Lapras': 18}}
count_d={}
pokemon_main_lst=pokemon_go_data.keys()
#print(pokemon_main_lst)
for main_keys in pokemon_main_lst:
pokemon_sub_lst=pokemon_go_data[main_keys].keys()
#print(sub_lst)
for pokemon in pokemon_sub_lst:
if pokemon not in count_d:
count_d[pokemon]=0
count_d[pokemon]+=pokemon_go_data[main_keys][pokemon]
#print(count_d)
most_common_pokemon=sorted(count_d,key=lambda k:count_d[k])[-1]
print(most_common_pokemon)

TA贡献1775条经验 获得超11个赞
out = {}
for k,v in [[k2,p[k1][k2]] for k1 in p for k2 in p[k1]]:
if k in out.keys():
out[k] = out[k] + v
else:
out[k] = v
print(max(out, key=out.get))
原则上与上述答案基本相同,但实现略有不同
或者
from itertools import groupby
out = sorted([[k2,p[k1][k2]] for k1 in p for k2 in p[k1]])
result = {a:sum(c for _, c in b) for a, b in groupby(out, key=lambda x:x[0])}
print(max(result,key=result.get))
或者
out = sum(map(Counter, p.values()), Counter())
print(max(out,key=result.get))
添加回答
举报