嵌套列表理解dict和列表python
我有一个字典列表,其中一个有很多键,并且只想将每个字典的键价格的值过滤到一个列表中。我正在使用下面的代码,但没有工作嵌套列表理解dict和列表python,python,list,dictionary,Python,List,Dictionary,我有一个字典列表,其中一个有很多键,并且只想将每个字典的键价格的值过滤到一个列表中。我正在使用下面的代码,但没有工作 print [b for a:b in dict.items() if a='price' for dict in data] 提前感谢您的帮助 我认为您需要以下内容(如果数据是您的“目录列表”): 我所做的是,在dict列表上迭代,并对每个dict使用get('price')(因为get()不会抛出键异常)来读取'price'键的值。 注意:避免将“dict”用作变量名,因为
print [b for a:b in dict.items() if a='price' for dict in data]
提前感谢您的帮助 我认为您需要以下内容(如果
数据
是您的“目录列表”):
我所做的是,在dict列表上迭代,并对每个dict使用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]
>>>
您可以删除输出列表中的None
,方法是将显式if检查添加为:[d['price']用于数据中的d,如果d中的'price'
对代码的评论:
[b for a:b in dict.items() if a='price' for dict in data]
a:b
应该是a,b
a='price'
中的语法错误应该是a=='price'
(拼写错误==运算符as=)
[b for dict in data for a, b in dict.items() if a == 'price' ]
中,如果a==“price”
循环是不必要的,那么简单的get(key)
,setdefault(key)
或[key]
在没有循环的情况下工作得更快
a:b?谢谢你,格里耶什!这正是我所需要的!为了理解我的错误所在,我用a,b代替了a:b尝试了我的版本,但它也不起作用。。。再次感谢你的帮助@user2950162不,您的代码中还有其他错误。我更新了我的答案,您也应该阅读,以便下次可以避免错误。
[b for dict in data for a, b in dict.items() if a == 'price' ]