如果使用Python列表理解嵌套嵌套循环

米希尔·泰特(Mihir Thatte)

谁能帮我找出产生以下输出的列表理解方式-

让给定列表为-

results = [
    {"id":  1, "name":  "input"},
    {"name": "status", "desc": "Status"},
    {"name": "entity", "fields": [
        {"id": 101, "name": "value"},
        {"id": 102, "name": "address"}]
    }
]

我正在寻找列表形式的输出。获得输出的代码是:

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"])

因此,使用上述代码的输出是-

['input', 'status', 'entity.value', 'entity.address']

如果在列表理解中嵌套了for循环,是否有可能获得类似的输出?

如果列表理解的条件,我在尝试访问该内部for循环时遇到麻烦

我的尝试-

output = [eachDict["name"]+"."+field["name"] for field in eachDict["fields"] if "fields" in eachDict else eachDict["name"] for eachDict in results]
贾里德·高根(Jared Goguen)

将您的代码转换为可用代码的一种方法是使内部循环生成列表,然后将结果展平。

sum(([d['name'] + '.' + f['name'] for f in d['fields']] 
    if d.get('fields') else [d['name']] for d in results), [])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章