簡體   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