在这里,我遇到了一些关于循环遍历json对象content
的困难。
该json文件如下:
[{'archived': False,
'cache_ttl': None,
'collection': {'archived': False,
'authority_level': None,
'color': '#509EE3',
'description': None,
'id': 525,
'location': '/450/',
'name': 'eaf',
'namespace': None,
'personal_owner_id': None,
'slug': 'eaf'},
'collection_id': 525,
'collection_position': None,
'created_at': '2022-01-06T20:51:17.06376Z',
'creator_id': 1,
'database_id': 4,
}, ... ]
我希望能够遍历列表中的每个字典,检查集合是否为空,然后对于每个集合,如果位置等于'/450/'
,则将该字典添加到列表中。
我的代码如下。
content = json.loads(res.text)
for q in content:
if q['collection']:
for col in q['collection']:
if col['location'] == '/450/':
data.append(q)
print(data)
玩弄了一下之后,我要么得到了ValueError: too many values to unpack (expected 2)
,要么得到了TypeError: string indices must be integers
。非常感谢对我的帮助。
免责声明:
我之前以列表推导式的形式写了它,而且它运行得非常好,但是现在不再起作用,因为我现在需要检查collection
是否为空。
我先前的写法如下:
content = [ x for x in content if x['collection']['location'] == '/450/']
TypeError: string indices must be integers
的错误提示,因为col
是一个字符串,而你试图执行col['location']
。 - John Gordon