我正在尝试使用列表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]}
?
为什么这是一个错误?
答案 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})