python - 如何使用 python 从 JSON 中提取特定字段和值?

标签 python json python-3.x

我正在迭代一个 JSON,我想从此对象中提取以下字段:

  1. 身份证,
  2. 开放日期
  3. 用户
  4. 工单状态
  5. 结束日期

我的数据结构如下:

filtered_data = 
[{'id': 1021972, 'Aging_Deferred_Transferred': '', 'Aging_Open_Issue': '0.94', 
'Aging_Un_investigated_Issue': '0.94', 'User': 'John P.', 'ModifiedOn': '2017-09-04 21:29:59', 
'Open_date':'2017-08-04 01:34:18','End_date':'2017-09-05 00:29:01',
'Ticket_status':'Transferred'},{'id': 1036722, 'Aging_Deferred_Transferred': '', 'Aging_Open_Issue': '0.12', 
'Aging_Un_investigated_Issue': '0.01', 'User': 'John P.', 'ModifiedOn': '2017-09-04 21:29:59', 
'Open_date':'2017-09-01 00:34:18','End_date':'',
'Ticket_status':'Researching'},{'id': 1015621, 'Aging_Deferred_Transferred': '', 'Aging_Open_Issue': '0.99', 
'Aging_Un_investigated_Issue': '0.11', 'User': 'John D.', 'ModifiedOn': '2017-06-05 12:19:59', 
'Open_date':'2017-01-01 00:00:18','End_date':'2017-09-01 20:20:57',
'Ticket_status':'Closed'}]

我想返回一个数据结构,比如字典(如果你认为有更好的数据结构来实现我的目标,请提出来)如下:

dict_user_john_p = {'ID':1021972,'Open_date':'2017-08-04 01:34:18','Ticket_status':'Transferred','End_date':'2017-09-05 00:29:01',
'ID':1036722,'Open_date':'2017-09-01 00:34:18','Ticket_status':'Researching','End_date':''}

dict_user_john_D = {'ID':1015621,...,'End_date':'1015621'}

如何提取提到的特定字段并将它们作为另一个数据结构(字典)返回?

最佳答案

filtered_data 是一个普通列表,因此您可以使用普通索引或迭代访问其中的各个字典。您可以获取每个元素并将它们放入一个新的字典中,以用户名作为键:

filtered_data = [{'id': 1021972, 'Aging_Deferred_Transferred': '', 'Aging_Open_Issue': '0.94', 
'Aging_Un_investigated_Issue': '0.94', 'User': 'John P.', 'ModifiedOn': '2017-09-04 21:29:59', 
'Open_date':'2017-08-04 01:34:18','End_date':'2017-09-05 00:29:01',
'Ticket_status':'Transferred'},{'id': 1036722, 'Aging_Deferred_Transferred': '', 'Aging_Open_Issue': '0.12', 
'Aging_Un_investigated_Issue': '0.01', 'User': 'John P.', 'ModifiedOn': '2017-09-04 21:29:59', 
'Open_date':'2017-09-01 00:34:18','End_date':'',
'Ticket_status':'Researching'},{'id': 1015621, 'Aging_Deferred_Transferred': '', 'Aging_Open_Issue': '0.99', 
'Aging_Un_investigated_Issue': '0.11', 'User': 'John D.', 'ModifiedOn': '2017-06-05 12:19:59', 
'Open_date':'2017-01-01 00:00:18','End_date':'2017-09-01 20:20:57',
'Ticket_status':'Closed'}]

data_by_user = {}
for d in filtered_data:
    data_by_user[d["User"]] = d

print(data_by_user["John P."])

现在您可以通过使用他们的名字为新字典建立索引来访问 John P 的数据(或任何其他人的数据)。


编辑:您可以选择哪些键/值对将出现在新字典中,方法是构建明确仅从您指定的键中选择的新字典:

data_by_user = {}
for d in filtered_data:
    data_by_user[d["User"]] = {k:d[k] for k in ("id", "Open_date", "User", "Ticket_status", "End_date")}

关于python - 如何使用 python 从 JSON 中提取特定字段和值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46061738/

相关文章:

python - 将pdf分成两部分

python - 将 curl 命令转换为 request.post

python - 语法错误 : Non-ASCII character but no encoding declared

javascript - 从 json 中的内部数组获取值

python-3.x - 如何在Elasticsearch中使用通配符搜索连续单词的文档

Python GTK 拖放 - 获取 URL

angularjs - 获取 JSON 格式的 Azure Blob 数据

java - java 类的隐式 jsonFormat

python-3.x - 运行 300000 行的 csv 时 python 中的内存错误

python - MySQLdb - 模块未找到错误