使用python for循环获取具有值的json对象

时间:2019-05-14 23:08:27

标签: python json

当我使用时:

for reports in raw_data:
        for names in reports["names"]:
                report_name = json.dumps(names).strip('"')
                report_names.append(report_name)

我得到密钥/对象名称:'report1',...

当我使用时:

for reports in raw_data:
        for names in reports["names"].values():
                report_name = json.dumps(names).strip('"')
                report_names.append(report_name)

我得到对象的值:'name1',...

如何一起获取对象和值,例如:'report1':'name1',...

json:

[
  {
    "names": {
      "report1": "name1",
      "report2": "name2"
    }
  },
  {
    "names": {
      "report3": "name3",
      "report4": "name4"
    }
  }
]

2 个答案:

答案 0 :(得分:0)

您需要遍历对象中的每个字典,然后从items()中提取每个键:值对:

data = [
  {
    "names": {
      "report1": "name1",
      "report2": "name2"
    }
  },
  {
    "names": {
      "report3": "name3",
      "report4": "name4"
    }
  }
]

for d in data:
    for k, v in d["names"].items():
        print(k, v)

结果:

report1 name1
report2 name2
report3 name3
report4 name4

或者如果您仅可以打印出元组对:

for d in data:
    for pair in d["names"].items():
        print(pair)

# ('report1', 'name1')
# ('report2', 'name2')
# ('report3', 'name3')
# ('report4', 'name4')

如果要将所有对都放在列表中,请使用列表理解

[pair for d in data for pair in d["names"].items()]
# [('report1', 'name1'), ('report2', 'name2'), ('report3', 'name3'), ('report4', 'name4')]

答案 1 :(得分:0)

尝试这样的事情:

import json
with open(r'jsonfile.json', 'r') as f:
        qe = json.load(f)
        for item in qe:
            if item == 'name1': 
                print(qe)