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

2024-09-21 05:20:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典和一个附加值数组:

df = [{'name':'Bob','number':65}, {'name':'Jonh','number':44}]
foo = ['grandpa', 'dad']

df是我的dict,foo是我要附加到df的值数组(每个字典项一个值)

为此,我创建了一个列表:

_ = [d.update({'id':f}) for d,f inzip(df, foo)]

当然,这不会返回任何东西,而是更新df,所以我的问题是:这是最具python风格的方法吗?也许因为它不返回任何值,所以使用for循环将是一个更好的选择,您认为呢


Tags: namenumberdf列表for字典fooupdate
2条回答

您最好使用循环添加它们(如果foo和df的长度不相同,我选择max(len)):

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

如果你不想列清单,那么清单理解是完全不合适的。相反,你依赖的是副作用。Pythonic的意思是显式优于隐式,所以只需将代码转换为显式for循环即可

for d,f in zip(df, foo):
    d.update({'id':f})

相关问题 更多 >

    热门问题