Python v3.4.3
给出一个字典列表:
dlist = [{'Bilbo':'Ian','Frodo':'Elijah'},{'Bilbo':'Martin','Thorin':'Richard'}]
还有一个变量k
k = 'Frodo'
任务是编写一个表达式,从字典中分配列表,其中键不存在必须显示“not present”,所有问题必须在一行内解决。
我已经编写了可以给出期望输出的代码:
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']
编辑:此外,如果所有字典都具有所需的键,则可以正确分配。
res = [x[k] for x in dlist]
但是如果在字典中要获取某个键的值时,只能使用dictionary[key]这种方式,不能和for kk in dictionarylist这样的语句结合起来使用。
在abhinsit回答了这个问题并给出了一些见解之后,我已经成功地解决了它,而且没有使用.get方法。
output = [item[k] if k in item else 'NOT PRESENT' for item in dlist]
对我来说主要的问题是else语句的正确位置。
kk.get(k, 'NOT PRESENT')
。 - TigerhawkT3