#python #list-comprehension #generator-expression
#python #понимание списка #генератор-выражение
Вопрос:
У меня есть следующий код, который работает нормально:
incl_list = ['A']
my_list = [{'A': 1, 'B': 'world'}, {'A': 4, 'B': 'hello'}]
result = 'n'.join(','.join(f'{key}={value}' for key, value in record.items() if key in incl_list) for record in my_list)
Результат дает:
'A=1nA=4'
Мой вопрос в том, почему я не могу добавить else
оператор, например:
result = 'n'.join(','.join(f'{key}={value}' for key, value in record.items() if key in incl_list) else 'ignore' for record in my_list)
похоже на понимание списка?
Ошибка, которую я получаю,:
File "<ipython-input-276-201c8f88ac13>", line 1
result = 'n'.join(','.join(f'{key}={value}' for key, value in record.items() if key in incl_list else 'ignore') for record in my_list)
^
SyntaxError: invalid syntax
Комментарии:
1. Какие-либо возникающие ошибки?
2. Вы можете использовать
a if b else c for d in e
, а не то, что вы пытались сделать.3. @zixuan Я обновил его сейчас.
4. @Newskooler Я предлагаю вам внимательно это проверить. Это не то, что вы делаете.
5. @khelwood Вы действительно правы. Прошу прощения за мое замешательство. С таким количеством вложений иногда трудно отслеживать.
Ответ №1:
Ваше else
утверждение должно сопровождаться if
утверждением при использовании внутри понимания, таким образом, вы можете изменить свой код таким образом, чтобы он работал
result = 'n'.join(','.join(f'{key}={value}' if key in incl_list else 'ignore' for key, value in record.items()) for record in my_list)