[英]Nested list comprehension dict and list python
我有一個字典列表,其中有很多鍵,並且只想將每個字典的鍵價格值過濾到一個列表中。 我正在使用下面的代碼,但無法正常工作...
print [b for a:b in dict.items() if a='price' for dict in data]
在此先感謝您的幫助!
我認為您需要以下內容(如果data
是您的“詞典列表”):
[d.get('price') for d in data]
我正在做的是,遍歷字典列表,並對每個字典使用get('price')
(因為get()
不會拋出鍵異常)來讀取'price'鍵的值。
注意:避免使用“ dict”作為變量名稱,因為它是內置類型名稱。
例:
>>> data = [ {'price': 2, 'b': 20},
{'price': 4, 'a': 20},
{'c': 20}, {'price': 6, 'r': 20} ] # indented by hand
>>> [d.get('price') for d in data]
[2, 4, None, 6]
>>>
您可以通過以下方式添加顯式的if-check來刪除輸出列表中的None
: [d['price'] for d in data if 'price' in d]
。
您的代碼的評論:
[b for a:b in dict.items() if a='price' for dict in data]
a:b
應該是a, b
a='price'
應該是a == 'price'
(misspell ==運算符為=) 這不是錯誤,使用內置類型名稱作為變量名稱是不好的做法。 您不應將“ dict”,“ list”,“ str”等用作變量(或函數)名稱。
您的代碼的正確形式是:
[b for dict in data for a, b in dict.items() if a == 'price' ]
for a, b in dict.items() if a == 'price'
不需要for a, b in dict.items() if a == 'price'
循環,則for a, b in dict.items() if a == 'price'
, setdefualt(key)
簡單的get(key)
, setdefualt(key)
或[key]
可以更快地進行無循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.