嵌套列表理解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

  • 其次,if条件-
    a='price'
    中的语法错误应该是
    a=='price'
    (拼写错误==运算符as=)

  • 嵌套循环的顺序错误(在列表压缩中,我们稍后编写嵌套循环)

  • 这不是错误,而是使用内置类型名作为变量名的错误做法。您不应该使用“dict”、“list”、“str”等作为变量(或函数)名称

    代码的正确形式是:

      [b for dict in data for a, b in dict.items() if a == 'price' ]
    
  • 在dict.items()中a、b的列表压缩表达式
    中,如果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' ]