【发布时间】:2013-12-28 20:12:42
【问题描述】:
我正在尝试将以下代码转换为更具可读性的代码。
for x in list_of_dicts:
for y in header:
if y not in x.keys():
x[y] = ''
它需要一个字典列表并添加 key:value 对,默认值 = '' for any
当前字典中尚不存在的键。
我还是 python 的新手,所以任何帮助都将不胜感激。我试过了:
return [x[y] = '' for x in list_of_dicts for y in header if y not in x.keys()]
但我认为你不能有“=”
【问题讨论】:
-
推导是为了建立一个列表,而不是为了执行一系列赋值语句。
-
也许考虑将
list_of_dicts改为defaultdict列表,这样您就不必为未定义的键显式填充它? -
if y not in x.keys()- 放弃keys()电话。在 Python 2 上,这将构建一个不必要的键列表,然后遍历它们以找到y,完全放弃了使用 dict 的好处。在 Python 3 上,这只是不必要的输入。if y not in x是你想要的。 -
此外,dicts 有一个
setdefault方法,如果键不存在,它将为键设置默认值,所以如果你愿意,你可以使用x.setdefault(y, '')并删除 @987654331 @.
标签: python for-loop nested list-comprehension dictionary-comprehension