因此,我一直在使用JSON并尝试进行打印,但是没有任何运气。基本上,JSONI尝试打印的是 city ,如您在此处看到的:
irb
我对代码所做的事情是,我创建了一个循环,该循环通过调用名称{
'id': '5235246c-ac21a7-151128-8cd9-512512',
'type': 'Hello world',
'metadata': {
'invite_text': "A very cool text here!!",
'cityplace': [
{
'display_text': 'Stackoverflow City',
}
]
}
}
来打印,该名称为我提供了我打印出的JSON对象。
我尝试过的是
test_print
不幸的是,这给了我错误
print(test_print['metadata']['cityplace']['display_text'])
所以我需要做的是:
TypeError: list indices must be integers or slices, not str
现在我的问题是:是否可以打印出来而不必添加print(test_print['metadata']['cityplace'][0]['display_text'])
,因为将来可能不会总是[0]
?
答案 0 :(得分:1)
cityplace
是一个列表。使用索引。
例如:
test_print = {
'id': '5235246c-ac21a7-151128-8cd9-512512',
'type': 'Hello world',
'metadata': {
'invite_text': "A very cool text here!!",
'cityplace': [
{
'display_text': 'Stackoverflow City',
}
]
}
}
print(test_print['metadata']['cityplace'][0]['display_text'])
或对其进行迭代。
例如:
for i in test_print['metadata']['cityplace']:
print(i["display_text"])
答案 1 :(得分:1)
您cityplace
不是JSON。它是仅包含一个JSON的列表。因此,您必须从中选择JSON,当然是[0]
。如果列表将来会包含更多元素,则需要进行迭代
texts = [city['display_text'] for city in test_print['metadata']['cityplace']
答案 2 :(得分:1)