- GXX = 游戲 ID
player_statistics =
{'P001': {'G02': ['1'], 'G05': ['0'], 'G07': ['0'], 'G08': ['0'], 'G10': ['1']},
'P067': {'G02': ['1'], 'G05': ['1'], 'G07': ['0'], 'G08': ['0'], 'G10': ['0']},
'P218': {'G02': ['0'], 'G05': ['1'], 'G07': ['1'], 'G08': ['0'], 'G10': ['0']},
'P101': {'G02': ['0'], 'G05': ['0'], 'G07': ['1'], 'G08': ['1'], 'G10': ['0']},
'P456': {'G02': ['1'], 'G05': ['1'], 'G07': ['0'], 'G08': ['1'], 'G10': ['0']}}
game_info = [
['G05', 'Hopscotch', 'N', '2'],
['G07', 'Dominoes', 'S', '5'],
['G08', 'Chess', 'N', '3'],
['G10', 'Monopoly', 'N', '3'],
['G02', 'MineCraft', 'S', '5']
]
我想將 game_info 中每個串列中的 index[2] 和 index[3] 添加到 player_statistics 中的值(串列)中的值。
我的代碼:
for values in player_statistics.values():
for k, v in values.items():
for data in game_info:
if k == data[0]:
player_statistics[k].insert(1, data[2])
player_statistics[k].insert(2, data[3])
我的代碼輸出:
Traceback (most recent call last):
File "D:\projects\FinalCodingChallenge\test.py", line 25, in <module>
player_statistics[k].insert(1, data[2])
KeyError: 'G02'
預期輸出:
player_statistics =
{'P001': {'G02': ['1', 'S', '5'], 'G05': ['0', 'N', '2'], 'G07': ['0', 'S', '5'], 'G08': ['0', 'N', '3'], 'G10': ['1', 'N', '3']},
'P067': {'G02': ['1', 'S', '5'], 'G05': ['1', 'N', '2'], 'G07': ['0', 'S', '5'], 'G08': ['0', 'N', '3'], 'G10': ['0', 'N', '3']},
'P218': {'G02': ['0', 'S', '5'], 'G05': ['1', 'N', '2'], 'G07': ['1', 'S', '5'], 'G08': ['0', 'N', '3'], 'G10': ['0', 'N', '3']},
'P101': {'G02': ['0', 'S', '5'], 'G05': ['0', 'N', '2'], 'G07': ['1', 'S', '5'], 'G08': ['1', 'N', '3'], 'G10': ['0', 'N', '3']},
'P456': {'G02': ['1', 'S', '5'], 'G05': ['1', 'N', '2'], 'G07': ['0', 'S', '5'], 'G08': ['1', 'N', '3'], 'G10': ['0', 'N', '3']}}
如果您能解釋我在代碼中做錯了什么,并向我展示正確的方法,我將不勝感激。提前致謝。
uj5u.com熱心網友回復:
嘗試:
import pprint
player_statistics = {'P001': {'G02': ['1'], 'G05': ['0'], 'G07': ['0'], 'G08': ['0'], 'G10': ['1']},
'P067': {'G02': ['1'], 'G05': ['1'], 'G07': ['0'], 'G08': ['0'], 'G10': ['0']},
'P218': {'G02': ['0'], 'G05': ['1'], 'G07': ['1'], 'G08': ['0'], 'G10': ['0']},
'P101': {'G02': ['0'], 'G05': ['0'], 'G07': ['1'], 'G08': ['1'], 'G10': ['0']},
'P456': {'G02': ['1'], 'G05': ['1'], 'G07': ['0'], 'G08': ['1'], 'G10': ['0']}}
game_info = [
['G05', 'Hopscotch', 'N', '2'],
['G07', 'Dominoes', 'S', '5'],
['G08', 'Chess', 'N', '3'],
['G10', 'Monopoly', 'N', '3'],
['G02', 'MineCraft', 'S', '5']
]
lookup = { key : data for key, _, *data in game_info }
for key, player in player_statistics.items():
for key, value in player.items():
if key in lookup:
value.extend(lookup[key])
pprint.pprint(player_statistics)
輸出
{'P001': {'G02': ['1', 'S', '5'],
'G05': ['0', 'N', '2'],
'G07': ['0', 'S', '5'],
'G08': ['0', 'N', '3'],
'G10': ['1', 'N', '3']},
'P067': {'G02': ['1', 'S', '5'],
'G05': ['1', 'N', '2'],
'G07': ['0', 'S', '5'],
'G08': ['0', 'N', '3'],
'G10': ['0', 'N', '3']},
'P101': {'G02': ['0', 'S', '5'],
'G05': ['0', 'N', '2'],
'G07': ['1', 'S', '5'],
'G08': ['1', 'N', '3'],
'G10': ['0', 'N', '3']},
'P218': {'G02': ['0', 'S', '5'],
'G05': ['1', 'N', '2'],
'G07': ['1', 'S', '5'],
'G08': ['0', 'N', '3'],
'G10': ['0', 'N', '3']},
'P456': {'G02': ['1', 'S', '5'],
'G05': ['1', 'N', '2'],
'G07': ['0', 'S', '5'],
'G08': ['1', 'N', '3'],
'G10': ['0', 'N', '3']}}
uj5u.com熱心網友回復:
看起來你錯過了keys第一個 for 回圈。如果您添加它,它應該可以作業:
for keys, values in player_statistics.items():
for k, v in values.items():
for data in game_info:
if k == data[0]:
player_statistics[keys][k].insert(1, data[2])
player_statistics[keys][k].insert(2, data[3])
print(player_statistics)
uj5u.com熱心網友回復:
根據我的理解,與
player_statistics[k].insert()
您正試圖在玩家串列中查找游戲“G02”(“P001”、“P061”、...)
for values in player_statistics.values():
for k, v in values.items():
for data in game_info:
if k == data[0]:
player_statistics[k].insert(1, data[2])
player_statistics[k].insert(2, data[3])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/341449.html
上一篇:資料框在1列中包含多個值
