python - 从嵌套循环中提取数据
问题描述
我有一个场景,我在以下条件下从json响应中提取数据:
我正在循环遍历 json 并在同一父数组下找到 if 的值,然后在ifactive
下找到返回值(在本例中为 260551)。如果在通过 json 循环后没有as的值或 active is 的值但在同一个父数组中type is not则返回未找到。active
true
cls
type
type
alpha1
eces
active
true
true
cls
alpha1
在这里,我得到了正确的值,但是eces
我怎样才能得到这个字段的值,address
然后构造所有提取数据的键值映射并保存在一个 json 文件中。c_m
active
type
这是我尝试过的:
found = False
for di in d:
if di.get('active', False):
for cl in di.get('cls', []):
if cl.get('type') == 'alpha1':
print(di['eces'])
found = True
if not found:
print("Not found")
所需的 json 输出:
{ "res1": [{ "eces": "260551", "res2": [{ "c_m": 345, "clsfrmt": [ { "address": "{\"I_G\":\"CD\",\"I_D\":\"01\",\"I_Y\":\"C1\",\"I_XD\":\"04\",\"I_TY\":1,\"S_L\":\"https://testappsampler.com\",\"O_DC\":\"\"}", "type": "Alpha" } ], "active": true }] }] }
我被困在这种结构中创建 json 数据,任何帮助都会很棒。
解决方案
虽然我建议以某种适当的方式重构此代码,但这将以非常直接的方式创建一个映射:
import json
dump = []
for di in d:
if di.get('active', False):
for cl in di.get('cls', []):
if cl.get('type') == 'alpha1':
dump.append(
{
"res1": [{
"eces": di['eces'],
"res2": [{
"c_m": di['c_m'],
"clsfrmt": [
{
"address": di['cls'][0]['address'],
"type": di['cls'][0]['type']
}
],
"active": di['active']
}]
}]
}
)
s = json.dumps(dump) # this is your JSON string
结果。
推荐阅读
- javascript - 使用 reactjs 更改当前页面位置
- r - 是否可以在某些语言环境中的 data.frame/data.table 中使用 unicode 列名?
- node.js - 服务端通过socket.io发送的数据显示异常
- javascript - date.setHours() 函数未将时间完全设置为零
- java - SAML 中的 SLO 是否应该适用于不同的浏览器?
- sh - 如何在 CloudBuild 中进行字符串比较?
- python - 在 Python 中实现数值积分方法
- python - 打开目录时出现 PermissionError
- flutter - 难以将商品添加到购物车 - Flutter
- node.js - 我是否需要安装 node.js 才能在 Rails 上使用 Ruby?