Python v3.4.3Список словаря, выражение
Учитывая список словарей:
dlist = [{'Bilbo':'Ian','Frodo':'Elijah'},{'Bilbo':'Martin','Thorin':'Richard'}]
и переменной к
k = 'Frodo'
задача состоит в том, чтобы написать expresion в Asign список из словарь, где ключ не существует, должен быть показан «нет», вся проблема должна быть решена в 1 строке.
Я написал линию, которая дает желаемый результат:
for kk in dlist : kk[k] if k in kk else 'NOT PRESENT'
выход:
'Elijah'
'NOT PRESENT'
, но проблема в том, что я не могу назначить этот вывод в переменную
res = list(for kk in dlist : kk[k] if k in kk else 'NOT PRESENT')
или
res = [for kk in dlist : kk[k] if k in kk else 'NOT PRESENT']
EDIT: Кроме того, это дает правильное назначение, если все словари нужный ключ
res = [x[k] for x in dlist]
, но я не могу объединить словарь [ключ], если «ключ» в словаре
с для кк в dictionarylist
После абхинсита ответил на этот вопрос и дал мне некоторые идеи: я решил это без .get
output = [item[k] if k in item else 'NOT PRESENT' for item in dlist]
Основная проблема для меня была правильная позиция выражения else.
Вкратце: это не правильный синтаксис для понимания, который вы ищете. См. Связанный дубликат. – TigerhawkT3
Ваш вопрос будет намного яснее, если вы предоставили ожидаемый результат (а не вывод при печати). Кроме того, удалите «Python343» из заголовка, для чего предназначены отдельные теги. –
Также проверьте 'kk.get (k,' NOT PRESENT ') '. – TigerhawkT3