用列表理解填充字典

时间:2018-04-30 19:53:32

标签: python dictionary list-comprehension

我正在尝试使用列表d中的键填充字典names e.g。

names=['a','v']
[d.update({str(n+'__k'):[1,2]} for n in names)]

然而,

ValueError: dictionary update sequence element #0 has length 1; 2 is required

如何获得d={'a__k':[1,2],'v__k':[1,2]}? 为什么这是一个错误?

2 个答案:

答案 0 :(得分:3)

在现代版本的Python中,您可以创建一个包含字典理解的字典:

{x: '%s__k' % x for x in names}

请注意,我更喜欢使用字符串%运算符而不是串联。它的效率稍高,但在我看来也更容易阅读。

答案 1 :(得分:1)

您可以通过使用dict comprehension

分隔更新和字典创建的两个操作来完成此操作
{n+'__k':[1,2] for n in names}

应该工作得很好。如果您需要更新d,则可以执行以下操作:

d.update({n+'__k':[1,2] for n in names})