这就是我的JSON文件的样子:
[
{
"id": 13445,
"uuid": "bf1923c5-a198-409b-851e-c67f7b8a661e",
"created_at": "2021-07-27 12:41:31.715922",
"updated_at": "2021-11-10 21:41:41.857982",
"meta": {
"osm_id": null,
"google_maps_place_id": "ChIJO4sAE5d-1EARsPwZh_s6eX4"
},
"type": "VILLAGE",
"name": {
"en": "Dіbrіvka",
"ru": "Дибривка",
"uk": "Дібрівка"
},
"public_name": {
"en": "village Dіbrіvka",
"ru": "п. Дибривка",
"uk": "с. Дібрівка"
},
"post_code": [
"09226"
],
"katottg": "UA32120130090047792",
"koatuu": "3222281602",
"lng": 30.9903521,
"lat": 49.88724620000001,
"parent_id": 1051
}
]
字符串
使用以下代码,我可以读取JSON并将其转换为Python dict
with open('ua_locations.json', 'r', encoding="utf-8") as user_file:
file_contents = user_file.read()
json_object = json.loads(file_contents)[0]
print(type(json_object))
print(json_object['id']['public_name']['lng']['lat'])
型
我如何只包含4个字段:id,public name,lng,lat为list
中的每个元素?
2条答案
按热度按时间apeeds0o1#
创建您感兴趣的键的列表(或元组)。然后,您可以在列表解析中合并字典解析,如下所示:
字符串
输出:
型
z3yyvxxp2#
你在你的例子中链接了键,这不是你所期望的。
你没有按顺序获取同一个对象的键,你的例子只有在对象是一个嵌套字典时才有效,该字典具有以下结构:
字符串
JSON格式:
型
d['id']['public_name']['lng']['lat']
表示从左向右遍历,从当前对象中获取与当前键关联的值,并将该值赋给当前对象。结果是42。如果你想要这些字段,你需要像这样查询同一个对象的字段:
型
这将获取字段值,但省略字段名。
要获取字段名称和值,请使用以下解析之一:
型
或者是
型
第一个保留键在字典中出现的顺序,第二个保证所有项具有相同的字段顺序,但第二个只有在所有字段都存在时才能工作。
你的顶层数据是一个
list
,它不支持使用字符串作为索引,如果你想对一个元素应用上面的操作,使用索引来获取元素并像这样应用操作:型
第一个对象使用
0
,第二个对象使用1
,以此类推。您可以定义一个函数来重用相同的代码:
型
最后,要将转换应用于列表的所有元素,请使用列表解析:
型