[英]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.