如何使用python3解析json中dict列表中的内容
我的json文件:如何使用python3解析json中dict列表中的内容,python,json,python-3.x,Python,Json,Python 3.x,我的json文件: { "data": [ { "features": { "location": "West Springfield, MA", "geo_type": "User location", "screen_name": "JtTatro", "primary_geo": "West Springfield, MA", "id": 2158
{
"data": [
{
"features": {
"location": "West Springfield, MA",
"geo_type": "User location",
"screen_name": "JtTatro",
"primary_geo": "West Springfield, MA",
"id": 2158092352,
"tweets": 1,
"name": "Jim Tatro"
},
"user_id": 2158092352
}
,
{
"features": {
"location": "Tijuana, Baja California",
"geo_type": "User location",
"screen_name": "YuitziContreras",
"primary_geo": "Tijuana, Baja California",
"id": 996917180980744193,
"tweets": 1,
"name": "yuitzi contreras"
},
"user_id": 996917180980744193
}
]
}
我正在尝试解析存储在features dict中的数据。到目前为止,我的代码是:
import json
input_file = open ('file.json')
json_array = json.load(input_file)
tweet_list = []
features_list = []
user_list =[]
for item in json_array:
for item2 in json_array[item]:
tweet_list.append(item2)
for features,user in tweet_list:
print(features,user)
上面的代码返回dict名称:features,user\u id
。如何获取每个dict字段的内容,以便将其传递到数据库
例如,get location、geo_type等。在JSON中,
[]
表示数组,而{}
表示对象。Python将JSON对象(例如,{“features”:…,“user_id”:…}
)解析为dict。您应该使用.items()
方法从dict中获取键值对。迭代dict只会得到键值。您可以使用列表理解来解析特性
:
features = [v['features'] for v in json_array['data']]
如果任何一行没有名为features
的键,则v['features']
将抛出KeyError
为了避免这种情况
features = [v['features'] for v in json_array['data'] if 'features' in v.keys()]
类似地,可以构造用户列表
最后,tweet\u列表
,在功能上似乎是功能
和用户列表
的zip
,可以使用列表理解和词典解包直接构建,如下所示:
tweet_list = [dict(v['features'], **{'user_id': v['user_id']})
for v in json_array['data']
if 'features' in v.keys() and 'user_id' in v.keys()]
# tweet_list outputs:
[{'geo_type': 'User location',
'id': 2158092352,
'location': 'West Springfield, MA',
'name': 'Jim Tatro',
'primary_geo': 'West Springfield, MA',
'screen_name': 'JtTatro',
'tweets': 1,
'user_id': 2158092352},
{'geo_type': 'User location',
'id': 996917180980744193,
'location': 'Tijuana, Baja California',
'name': 'yuitzi contreras',
'primary_geo': 'Tijuana, Baja California',
'screen_name': 'YuitziContreras',
'tweets': 1,
'user_id': 996917180980744193}]
# features outputs
[{'geo_type': 'User location',
'id': 2158092352,
'location': 'West Springfield, MA',
'name': 'Jim Tatro',
'primary_geo': 'West Springfield, MA',
'screen_name': 'JtTatro',
'tweets': 1},
{'geo_type': 'User location',
'id': 996917180980744193,
'location': 'Tijuana, Baja California',
'name': 'yuitzi contreras',
'primary_geo': 'Tijuana, Baja California',
'screen_name': 'YuitziContreras',
'tweets': 1}]
如果你创建一个例子,你会得到更多更好的答案。尤其要确保输入和预期的测试数据是完整的(不是伪数据),并且可以很容易地剪切和粘贴到编辑器中,以便测试建议的解决方案。我不理解这个问题。你想要的输出是什么?您清楚地知道如何访问dict中的元素,那么是什么阻止了您获得该输出呢?