在Python上读取和操作JSON元素
我是一名python新手,需要从json文件中读取和操作元素,但我不断出错,不知道如何继续前进。这是我的代码:在Python上读取和操作JSON元素,python,json,list,Python,Json,List,我是一名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,
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回溯(最近一次调用上次)
在()
---->1城市=d[“城市”]
TypeError:列表索引必须是整数或片,而不是str
然后我试了一下:
city = d[:]['city']
TypeError回溯(最近一次调用上次)
在()
---->1城市=d[:][“城市”]
TypeError:列表索引必须是整数或片,而不是str
有什么想法吗?谢谢 您可以编写一个循环来遍历每个对象
final=[]
for obj in d:
final.append(obj['city'])
或者你可以试着用这个
final = [obj['city'] for obj in d]
或者,如果只需要第一个值
print(d[0]['city'])
输出
“巴黎”
由于您的数据是一个字典列表,因此必须使用索引值来获取字典中的数据,因为这是列表中的一个字典,您必须在通过键调用值之前提供一个列表索引。这应该起作用:
dict = d[0]
city = dict['city']
或者您可以简单地使用:
city = d[0]['city']
您很可能不想知道正在查找的元素的数组索引 有了一些pythonic风格,您可以使用如下方式创建:
arr = [(dict['id'], dict['city']) for dict in d]
输出将是
[(1, 'Paris'),
(2, 'Mons'),
(3, 'Leuven')]
然后,如果需要,您可以只获取元组中的特定项
例:
对于城市属性中包含“s”的每个条目,它将返回
id
和name
。那么city=d[0]['city']
呢?尝试循环insteadIt是一个列表,正如Arvind指出的,你应该尝试将列表索引放在字典键之前。Hari,非常感谢你的回答。还有一件事,如何将此输出保存到另一个列表?再次感谢您的时间和耐心:)我已经添加了将城市添加到列表的代码。谢谢Hari,我以前试过,我觉得我写错了什么。我还是会犯同样的错误。我真的不明白:(TypeError:列表索引必须是整数或片,而不是str
我添加了另一种获取值列表的方法。请尝试将空列表作为输出[]
。是否有方法将列表作为字符串获取?
arr = [(dict['id'], dict['city']) for dict in d if 's' in dict['city']]