繁体   English   中英

词典理解内的词典理解

[英]Dictionary Comprehension inside a Dictionary Comprehension

我的以下输出来自REST API:

{
    "internalId": 14,
    "label": "L1",
    "requiredLevel": 10,
    "preferableLevel": 100,
    "conditions": [
        {
            "label": "A_WO_TYPE",
            "function": "in",
            "valueList": [
                "T1",
                "T2",
                "T3",
                "T4"
            ]
        },
        {
            "label": "A_SYS_AREA",
            "function": "in",
            "valueList": [
                "9999"
            ]
        }
    ]
},

我正在尝试通过运行字典理解来清理它。 在条件语句中添加第二个理解之前,我一直很好。

{item['label']: 
    {'requiredLevel': item['requiredLevel'], 
    'preferableLevel': item['preferableLevel'],
    'conditions': 
        {'label': LABEL_REPLACEMENT[condition['label']],
        'function': condition['function'],
        'valueList': condition['valueList']
        for condition in item['conditions']}}
for item in tempItems}

我得到的错误是:

for condition in item['conditions']}
  ^
SyntaxError: invalid syntax

当条件只是item ['conditions']时,它运行良好,但是我想即时替换label的值,我想我试图变得太聪明,或者我遗漏了一些明显的东西。 我知道如果条件没有可能包含多个项目,那么我就不需要第二个理解了。

当我碰到这堵墙时,任何帮助将不胜感激。

编辑:添加了错误消息

看一下你内心的理解(为简洁起见,x,y,z):

{'label': x, 'function': y, 'valueList': z for condition in item['conditions']}

您尝试一次理解多个键/值对,但这没有意义。 我想你想写:

[{'label': x, 'function': y, 'valueList': z } for condition in item['conditions']]

我发誓我在这里看到一条评论,要求获得我提出问题后立即发布的预期输出,但是我在这里不再看到它。 编写输出使我意识到我在错误条件下想到了这些项目。 我将其包装在一个列表中,现在有一个字典列表,它可以正常工作。

{item['label']: 
    {'requiredLevel': item['requiredLevel'], 
    'preferableLevel': item['preferableLevel'],
    'conditions': 
        [{'label': LABEL_REPLACEMENT[condition['label']],
        'function': condition['function'],
        'valueList': condition.get('valueList',condition.get('value',None))}
        for condition in item['conditions']]}
for item in tempItems}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM