Python 表达式的字典列表

Python 表达式的字典列表,python,list,python-3.x,dictionary,Python,List,Python 3.x,Dictionary,Python v3.4.3 给定词典列表: dlist = [{'Bilbo':'Ian','Frodo':'Elijah'},{'Bilbo':'Martin','Thorin':'Richard'}] 和一个变量k k = 'Frodo' 任务是从字典中写一个表达式到asign列表,其中键不存在必须显示为“不存在”,所有问题必须在一行中解决 我写了一行,给出了理想的输出: for kk in dlist : kk[k] if k in kk else 'NOT PRESENT' 输出:

Python v3.4.3

给定词典列表:

dlist = [{'Bilbo':'Ian','Frodo':'Elijah'},{'Bilbo':'Martin','Thorin':'Richard'}]
和一个变量k

k = 'Frodo'
任务是从字典中写一个表达式到asign列表,其中键不存在必须显示为“不存在”,所有问题必须在一行中解决

我写了一行,给出了理想的输出:

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 = [x[k] for x in dlist]
但我不能结合 字典[键]如果字典中有“键”

在dictionarylist中使用for kk

在阿宾塞回答了这个问题后,他给了我一些见解:我已经解决了这个问题

output = [item[k] if k in item else 'NOT PRESENT' for item in dlist]

对我来说,主要的问题是else语句的正确位置。

简单地说:这不是理解的正确语法,这正是你要寻找的。请参阅链接副本。如果您提供了预期结果(而不是打印时的输出),您的问题会更清楚。此外,从标题中删除“Python343”,这是单独标签的作用。此外,请查看
kk.get(k,'不存在')
。从标题中删除Python343,并给出了无条件的预期结果(如果)对于您的答案,它给出了理想的结果,但是不使用item.get也可以完成相同的任务。是的,在字典中获取/检查值有不同的方法,这完全取决于您想要如何实现它。你可能写了一个if而不是getYes,我的问题是else是强制性的,else位置必须不在最后,根据你的建议,我可以通过if[item[k]if k in item else‘not PRESENT’for item in dlist]获得理想的输出
>>> dlist = [{'Bilbo':'Ian','Frodo':'Elijah'},{'Bilbo':'Martin','Thorin':'Richard'}]
>>> required_key = 'Frodo'
>>> output = [item.get(required_key,'NOT PRESENT')for item in dlist]
>>> output
['Elijah', 'NOT PRESENT']
>>> 
>>> dlist = [{'Bilbo':'Ian','Frodo':'Elijah'},{'Bilbo':'Martin','Thorin':'Richard'}]
>>> required_key = 'Frodo'
>>> output = [item.get(required_key,'NOT PRESENT')for item in dlist]
>>> output
['Elijah', 'NOT PRESENT']
>>>