我的目标是遍历classes
中的 每个 元素,并将class
中classes
的值添加到新的{
"images": [
{
"classifiers": [
{
"classes": [
{
"class": "street",
"score": 0.846
},
{
"class": "road",
"score": 0.85
}
]
}
]
}
]
}
中列表。
JSON结构:
{'street','road'}
在上面的JSON示例中,新列表应包含:
json_data['images'][0]['classifiers']['classes']
我尝试迭代list.append()
,并为每一个class
重复list = list()
def func(json_data):
for item in json_data['images'][0]['classifiers']['classes']:
list.append(item['class'])
return(list)
的值。
TypeError
我收到的是TypeError: list indices must be integers or slices, not str
:
TypeError
我从这个list.append()
获得的是它尝试将一个字符串添加到列表中,但list.append()
不接受字符串作为参数。我需要以某种方式将字符串转换为其他内容。
我的问题是我应该将字符串转换为什么,以便[Welcome, , , , , , , to, , , , Java, , , , , Tutorial]
将其作为参数接受?
答案 0 :(得分:3)
第一个问题是classifiers
也是一个列表,因此您需要一个额外的索引才能获得classes
。这将有效:
for item in json_data['images'][0]['classifiers'][0]['classes']:
其次,您希望结果作为集合而不是列表,因此您可以执行:return set(lst)
。请注意,集合是无序的,因此不要指望项目的顺序与列表的顺序匹配。