下面的输出来自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
当条件只是项目['条件']时运行正常但是我想在飞行中替换标签的值,我想我试图变得太聪明或者我失踪了明显的东西。我知道如果条件没有可能包含多个项目,我就不需要第二次理解。
任何帮助都会非常感激,因为我在这个问题上遇到了障碍。
编辑:添加错误消息
答案 0 :(得分:0)
看看你内心的理解(x,y,z为了简洁):
encode('utf-8')
你尝试在一个理解中集中多个键/值对,这是没有意义的。我想你想写:
{'label': x, 'function': y, 'valueList': z for condition in item['conditions']}
答案 1 :(得分:0)
我发誓,我在这里看到一条评论,询问我在问这个问题时发布的预期输出,但我不再在这里看到了。写输出让我意识到我在考虑条件错误的项目。我将它包装在一个列表中,现在我有一个字典列表,它可以工作。
{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}