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