Понимание словаря в понимании словаря - PullRequest
0 голосов
/ 25 мая 2018

У меня есть вывод, полученный из 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

Все работало нормально, когда условия были просто пунктом ['условиями'], но я хотел заменить значение метки на летуи я думаю, что пытался стать слишком умным, или я упускаю что-то очевидное.Я знаю, что если бы в условиях не было возможности иметь несколько предметов, мне не понадобилось бы второе понимание.

Любая помощь будет принята с благодарностью, поскольку я бью стену по этому.

Редактировать: добавлена ​​ошибка msg

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

Клянусь, я увидел здесь комментарий с просьбой об ожидаемом результате, который был опубликован, как только я задал вопрос, но я его здесь больше не вижу.Написание вывода заставило меня понять, что я думал о предметах в неправильных условиях.Я завернул его в список, и теперь у меня есть список словарей, и он работает.

{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}
0 голосов
/ 25 мая 2018

Посмотрите на свое внутреннее понимание (краткость 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']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...