[英]Pythonic way to Create a List Comprehension with no Returned Value
我有一个字典和一个要附加到它的值数组:
df = [{'name':'Bob','number':65}, {'name':'Jonh','number':44}]
foo = ['grandpa', 'dad']
df
是我的字典, foo
是我想附加到df
一组值(每个字典项一个值)
为此,我创建了一个列表理解:
_ = [d.update({'id':f}) for d,f inzip(df, foo)]
这当然不会返回任何东西,而是更新df
,所以我的问题是:这是最pythonic的方法吗? 也许因为使用 for 循环不返回任何值将是更好的选择,你怎么看?
如果您不想列出清单,那么列表理解是完全不合适的。 相反,您依赖于副作用。 Pythonic 意味着显式优于隐式,因此只需将您的代码转换为显式for
循环。
for d,f in zip(df, foo):
d.update({'id':f})
你最好用循环添加它们(我选择 max(len) 以防 foo 和 df 的长度不同):
for i in range(max(len(foo), len(df))):
df[i]['id']=foo[i]
或者您可以使用如下所示的 zip(如@ShadowRanger 建议的那样):
for d,f in zip(df, foo):
d['id'] = f
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.