我有下面的代码和一个嵌套字典,我想访问每个参与者的“协助”值并附加它。我该怎么做?
gameData = {
"metadata": {
"dataVersion": "2",
"matchId": "NA1_4263873346",
"participants": [
"Sw_wTB5fzxXvyXeCovgcGhKNw4hLKzgcEvWFKzMqZWtfiJ7HtbxYOK6Nb7nBU5SR-B3bNt4Ay9bvjQ",
"-t2_OfuyZFaCdZJ1lvbbfRFgYS1FWZcGhIsqj-8m-SS9UZ9wFyYeWBiGkcMgNEl_geH5CF9tX4SAzQ",
"A-n0X4QWr8Jr0PISogZK3VpnIqqVbm87jchMYpTrUrhiSfeoxVCl8ImnJxaE_lg9pIAdxNgaFpkT7g"
]
},
"info": {
"gameVersion": "12.6.431.7988",
"mapId": 11,
"participants": [
{
"assists": 9,
"deaths": 5,
"kills": 1
},
{
"assists": 1,
"deaths": 3,
"kills": 1
},
{
"assists": 3,
"deaths": 5,
"kills": 6
}
]
}我使用它循环它们,但它返回错误"TypeError:列表索引必须是整数或切片,而不是str“。
participants = []
for row in gameData['metadata']['participants']:
participants_row = {}
participants_row['assists'] = gameData['info']['participants']['assists']
participants.append(participants_row)有人能帮助我理解如何循环它以获得所需的值吗?
发布于 2022-05-03 20:42:29
在访问dict的部分时有几个错误。
我想你的意思是:
# gameData = {"metadata": { ...
participants = []
for row in gameData['info']['participants']:
participants_row = {}
participants_row['assists'] = row['assists']
participants.append(participants_row)
print(participants)您的原作:for row in gameData['metadata']['participants']:正在迭代错误的participants列表。你的意思是:for row in gameData['info']['participants']:
发布于 2022-05-03 20:42:31
participants_row['assists'] = match_detail['info']['participants']['assists']我假设这一行代码会导致错误。要调试这一点,请将其分解为更小的部分:
info = match_detail['info']
participants = info['participants']
assists = participants['assists']如果这样做,您将看到第三行将导致错误。所以再加上
print(participants)现在我们看到participants是一个列表,但是您使用它就像字典一样。
我想你想要每个assists的participant。要做到这一点,一种方法是对列表进行理解:
assists = [p['assists'] for p in participants]附带说明:
python团队正在改进错误消息,以便消息指向导致这种错误的特定索引。我不知道它将在哪个版本中发布,但我很期待它,因为这种类型的嵌套索引非常常见。
https://stackoverflow.com/questions/72105176
复制相似问题