我早就有过这样的JSON(我需要找出每个团队摧毁的兵营数量):
[{'player_slot': 129,
'slot': 6,
'team': 3,
'time': 2117.449,
'type': 'CHAT_MESSAGE_TOWER_KILL'},
{'player_slot': 132,
'slot': 9,
'team': 3,
'time': 2156.047,
'type': 'CHAT_MESSAGE_TOWER_KILL'},
{'key': '512', 'time': 2178.992, 'type': 'CHAT_MESSAGE_BARRACKS_KILL'},
{'player_slot': 4,
'slot': 4,
'team': 2,
'time': 2326.829,
'type': 'CHAT_MESSAGE_TOWER_KILL'},
{'key': '2', 'time': 2333.384, 'type': 'CHAT_MESSAGE_BARRACKS_KILL'}],
{'key': '2', 'time': 2340.384, 'type': 'CHAT_MESSAGE_BARRACKS_KILL'}]
radiant_barracks_kills = 0
dire_barracks_kills = 0
for objective in match['objectives']:
for i,e in enumerate(objective):
if e['type'] == 'CHAT_MESSAGE_BARRACKS_KILL':
if objective[i-1]['slot'] < 5:
radiant_barracks_kills += 1
if objective[i-1]['slot'] >= 5:
dire_barracks_kills += 1
TypeError: string indices must be integers
有必要在循环中运行所有这些字典列表,并确定每个小组被摧毁的兵营数量。你知道吗
假设,如您所说,“match['objectives']包含字典列表”,那么您的问题是您进行了额外的迭代。如果您尝试
print
的类型和值e
:你会得到:
第一个
for
循环已经在字典列表上迭代。所以objective
已经是一本字典了。当您对enumerate
执行第二个for
循环时,它将在字典的键上迭代,然后e['type']
将失败,因为这就像您执行了:这将导致“TypeError:字符串索引必须是整数”。你知道吗
你只需要迭代一次。你知道吗
相关问题 更多 >
编程相关推荐