python 词典中的词典更改值

python dictionary in dictionary changing value

teams = ['Argentina', 'Australia', 'Belgium', 'Brazil', 'Colombia', 'Costa Rica', 'Croatia', 'Denmark', 'Egypt', 'England', 'France', 'Germany', 'Iceland', 'Iran', 'Japan', 'Mexico', 'Morocco', 'Nigeria', 'Panama', 'Peru', 'Poland', 'Portugal', 'Russia', 'Saudi Arabia', 'Senegal', 'Serbia', 'South Korea', 'Spain', 'Sweden', 'Switzerland', 'Tunisia', 'Uruguay']

wins = {"wins" : 0}


combined_data = dict.fromkeys(teams, wins)

combined_data["Russia"]['wins'] +=1

print(combined_data["Belgium"]['wins'])

应该打印 0 但所有 'wins' 上升 1 并打印输出 1

我也尝试过 'wins' 使用 32 个键,但没有用。

非常感谢。

wins 字典在 combined_data 字典内的 所有 键之间共享。

要解决此问题,请改用字典理解:

combined_data = {team: {"wins" : 0} for team in teams}

您的代码不是为每个国家/地区创建新词典,而是在每个键的值中引用完全相同的词典。您可以通过 运行 id() 在数据帧的两个单独键上看到这一点:

id(combined_data['Argentina'])   # 5077746752
id(combined_data['Sweden'])   # 5077746752

要按照你的意思去做,你应该使用类似字典表达式的东西:

combined_data = {team: {"wins" : 0} for team in teams}