【发布时间】:2016-08-19 18:30:46
【问题描述】:
Python v3.4.3
给定字典列表:
dlist = [{'Bilbo':'Ian','Frodo':'Elijah'},{'Bilbo':'Martin','Thorin':'Richard'}]
还有一个变量k
k = 'Frodo'
任务是写一个表达式来从字典中分配列表,其中键不存在必须显示'不存在',所有问题必须在 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']
编辑: 此外,如果所有字典都有所需的键,这会给出正确的分配
res = [x[k] for x in dlist]
但我不能合并 字典[key] 如果字典中有'key'
在字典列表中使用 for kk
在 abhinsit 回答了这个问题并给了我一些见解之后:我已经解决了没有 .get
output = [item[k] if k in item else 'NOT PRESENT' for item in dlist]
对我来说主要问题是 else 语句的正确位置。
【问题讨论】:
-
简而言之:这不是理解的正确语法,而这正是您要寻找的。查看链接的副本。
-
如果您提供了预期的结果(而不是打印时的输出),您的问题会更清楚。另外,从标题中删除“Python343”,这就是单独标签的用途。
-
另外,请查看
kk.get(k, 'NOT PRESENT')。 -
从标题中删除了 Python343 并给出了没有条件的预期结果(如果)
标签: python list python-3.x dictionary