Mih*_*tte 3 python list-comprehension python-2.7
谁能帮我弄清楚产生以下输出的列表理解方式 -
让给定的列表是 -
results = [
{"id": 1, "name": "input"},
{"name": "status", "desc": "Status"},
{"name": "entity", "fields": [
{"id": 101, "name": "value"},
{"id": 102, "name": "address"}]
}
]
Run Code Online (Sandbox Code Playgroud)
我正在寻找列表形式的输出。获取输出的代码是:
output = []
for eachDict in results:
if "fields" in eachDict:
for field in eachDict["fields"]:
output.append(eachDict["name"]+"."+field["name"])
else:
output.append(eachDict["name"])
Run Code Online (Sandbox Code Playgroud)
因此使用上述代码的输出是 -
['input', 'status', 'entity.value', 'entity.address']
Run Code Online (Sandbox Code Playgroud)
是否可以在列表理解中使用 if else 嵌套 for 循环获得类似的输出?
我无法在列表理解的 if 条件下尝试访问该内部 for 循环
我的尝试——
output = [eachDict["name"]+"."+field["name"] for field in eachDict["fields"] if "fields" in eachDict else eachDict["name"] for eachDict in results]
Run Code Online (Sandbox Code Playgroud)
将代码转换为可用代码的一种方法是让内部循环生成列表,然后将结果展平。
sum(([d['name'] + '.' + f['name'] for f in d['fields']]
if d.get('fields') else [d['name']] for d in results), [])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2442 次 |
| 最近记录: |