我是python新手,我需要读取和操作json文件中的元素,但是我一直遇到错误,而且不知道如何前进。这是我的代码:
import json
with open('file.txt', 'r') as json_data:
d = json.load(json_data)
数据集示例:
[
{
'id': 1,
'name': 'a',
'city': 'Paris'
},
{
'id': 2,
'name': 'b',
'city': 'Mons'
},
{
'id': 3,
'name': 'c.',
'city': 'Leuven'
}
]
当我尝试仅获取id
或name
时,出现此错误:
city = d['city']
TypeError跟踪(最近一次通话最近)
in()
----> 1个城市= d ['city']
TypeError:列表索引必须是整数或切片,而不是str
然后我尝试了这个:
city = d[:]['city']
TypeError跟踪(最近一次通话最近)
在()中 ----> 1个城市= d [:] ['city']
TypeError:列表索引必须是整数或切片,而不是str
有什么想法吗?谢谢!
答案 0 :(得分:1)
您很可能不想知道要查找的元素的数组索引。
具有某些Python风格,您可以使用tuples创建list comprehension,如下所示:
arr = [(dict['id'], dict['city']) for dict in d]
输出应为
[(1, 'Paris'),
(2, 'Mons'),
(3, 'Leuven')]
然后,您可以根据需要在元组中仅获取特定项目。
例如:
arr = [(dict['id'], dict['city']) for dict in d if 's' in dict['city']]
对于在city属性中每个包含“ s”的条目,其将返回id
和name
。
答案 1 :(得分:0)
您可以编写循环遍历每个对象
final=[]
for obj in d:
final.append(obj['city'])
或者您可以尝试使用此
final = [obj['city'] for obj in d]
或者,如果您只需要第一个值,则
print(d[0]['city'])
输出
“巴黎”
由于您的数据是词典列表,因此您必须使用索引值才能在字典中获取数据