繁体   English   中英

创建没有返回值的列表理解的 Pythonic 方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM