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