Во-первых, у меня есть список диктов с информацией о некоторых спортсменах, который выглядит следующим образом:
athletes = [{"name":"Robert", "country":"england", "event": "athletics men's 50000 metres", "medal":"gold"},
{"name":"Jan", "country":"england", "event": "athletics men's 50000 metres", "medal":"silver"}....]
Мне нужно создать дикт, основанный на названии страны Роберта и количестве медалей, которые они (страна в конкретном c событии), должна выглядеть так:
{'canada': [0, 0, 1], 'china': [1, 0, 0]...}
Первая позиция представляет золотые медали, вторую, серебряную и третью бронзовую.
{"medal":} может иметь "gold", "silver", "bronze" или "na" (не применимо)
Я пытался сделать это:
def funct(athletes:list, event:str):
import copy
list1 = [0, 0, 0]
dicc = {}
for i in athletes:
if i["event"] == event and i["medal"] != 'na':
dicc[i["country"]] = copy.deepcopy(list1)
for country in dicc.keys():
if country == i["country"] and i["medal"] == "gold":
dicc[country][0] +=1
elif country == i["country"] and i["medal"] == "silver":
dicc[country][1] +=1
elif country == i["country"] and i["medal"] == "bronze":
dicc[country][2] +=1
return dicc
print(funct(athletes, "athletics men's 50000 metres"))
Это работает, но я просто получаю информацию о последнем спортсмене этой страны (используя список сверху):
{'england': [0, 1, 0]
Когда я должен получить (ожидаемый результат):
{'england': [1, 1, 0]
что мне сделать, чтобы это исправить?