python - 使用python for循环获取具有值的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"
}
}
]
解决方案
您需要遍历对象中的每个字典,然后从以下位置提取每个键:值对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')]
推荐阅读
- r - 如何使用 FOR 和 İF 结构缩短代码?
- javascript - Angular 8:警告:清理 HTML 删除了一些内容
- python - 部分 Python 代码无法从其他文件导入
- javascript - 使用样式化组件打开和关闭移动导航栏菜单
- javascript - 打字稿返回和异步等待
- c++ - 通过从列表对象c ++中调用id或名称的属性获取特定对象
- c++ - 运行多个分离线程的意外行为
- excel-formula - 我可以在输出多个结果后使用 excel 公式吗?
- python - Pandas - 如何将整数列合并到一个新的整数列中
- pytorch - 关于 Train() 函数的设计