2024-05-13 21:53:58 发布
网友
我有一个JSON文件,我从中提取了一个列表
我尝试使用列表索引从列表中获取其他项,但出现了此错误
TypeError:列表索引必须是整数或片,而不是str
for name in data['athletes'][0:]['athlete']['displayName']: print(name)
如果在索引中不使用冒号,它会提取名字
这是data的类型,对吗
data
data: Dict[str, List[Dict[str, Dict[str, str]]]]
因此:
data['athletes'][0]: Dict[str, Dict[str, str]] data['athletes'][0:]: List[Dict[str, Dict[str, str]]]
当你切片data['athletes'](通过[0:])时,你会得到List,你不能通过字符串索引它。当您得到一个特定的元素(通过[0])时,您就得到了List中的第一个Dict
data['athletes']
[0:]
List
[0]
Dict
其他答案已经建议如何打印姓名。如果你想把它们变成一个列表,下面是你如何通过理解来做到这一点(我认为这是你试图用切片来做的):
names = [entry['athlete']['displayName'] for entry in data['athletes']]
你可能想要:
for athlete in data['athletes'] print(athlete['athlete']['displayName']
但是如果没有看到你的JSON就不可能确定
您正在指定:
大概data['athletes'][0]是一本字典。但是说data['athletes'][0:],实际上是复制了整个列表。试图从列表中提取一个键值'displayName',这是一个字符串,没有任何意义,因此会出现错误(只能按整数索引列表)。当然,那不是你的本意。您只需要列表的第0个元素,所以删除冒号
data['athletes'][0]
data['athletes'][0:]
'displayName'
如果列表中的每个元素data['athletes']都是一个带有键athlete的字典,您可以查看Daniel Roseman(@DanielRoseman)发布的答案
athlete
这是
data
的类型,对吗因此:
当你切片
data['athletes']
(通过[0:]
)时,你会得到List
,你不能通过字符串索引它。当您得到一个特定的元素(通过[0]
)时,您就得到了List
中的第一个Dict
其他答案已经建议如何打印姓名。如果你想把它们变成一个列表,下面是你如何通过理解来做到这一点(我认为这是你试图用切片来做的):
你可能想要:
但是如果没有看到你的JSON就不可能确定
您正在指定:
大概
data['athletes'][0]
是一本字典。但是说data['athletes'][0:]
,实际上是复制了整个列表。试图从列表中提取一个键值'displayName'
,这是一个字符串,没有任何意义,因此会出现错误(只能按整数索引列表)。当然,那不是你的本意。您只需要列表的第0个元素,所以删除冒号如果列表中的每个元素
data['athletes']
都是一个带有键athlete
的字典,您可以查看Daniel Roseman(@DanielRoseman)发布的答案相关问题 更多 >
编程相关推荐