我正在处理 JSON 响应的循环,并试图弄清楚为什么在下面的这种情况下我得到一个 TypeError: 'int' not subscriptable
。
list = []
for i in range(len(json_data['MRData']['RaceTable']['Races'][0]['Results'])):
list.append(i['FastestLap']['Time']['time'])
print(list)
我只是通过执行 try
/except
块解决了这个问题,但我宁愿知道我要迭代的内容的长度。我试着从其他人那里阅读一些关于此的帖子,但无法理解。
答案 0 :(得分:1)
这是因为 i
是一个整数:list.append(i['FastestLap']['Time']['time'])
试试这个:
results = json_data['MRData']['RaceTable']['Races'][0]['Results']
for i in range(len(results)):
list.append(results[i]['FastestLap']['Time']['time'])
它将从列表中获取第 i
项。
答案 1 :(得分:0)
您已经在范围内取了 len
,因此您将获得 i 的值为 int
从 0
到 len(whateverItIs) - 1
。在循环内部,您将 i
视为字典。当您尝试将整数作为可下标对象(如列表或字典)访问时,会引发“typeerror: 'int' object is not subscriptable”错误。
这就是为什么您在这一行中收到该错误的原因:
list.append(i['FastestLap']['Time']['time'])
要克服这个问题,您可以执行以下操作:
dict_val = json_data['MRData']['RaceTable']['Races'][0]['Results']
for element in dict_val:
list.append(element['FastestLap']['Time']['time'])