【问题标题】:find particular value from list of dict in python从python中的dict列表中查找特定值
【发布时间】:2020-04-13 08:14:28
【问题描述】:

我有一个这样的字典列表:

s = [{'a':1,'b':2},{'a':3},{'a':2},{'a':1}]

删除重复的值对 我想要一个字典列表,例如:

s = [{'a':1},{'a':3},{'a':2}]

【问题讨论】:

标签: python dictionary


【解决方案1】:

使用带有过滤器的列表推导 a:

s = [{k: v for k, v in x.items() if k =='a'} for x in s]
print (s)
[{'a': 1}, {'a': 3}, {'a': 2}]

【讨论】:

  • 为什么要遍历整个字典而不是按键获取值?
  • @OlvinR​​oght - 这是我的第一个想法;)
【解决方案2】:

仅当包含 'a' 时,您才能使用列表推导添加新的字典条目:

[{'a':d['a']} for d in s if 'a' in d]
# [{'a': 1}, {'a': 3}, {'a': 2}]

【讨论】:

    【解决方案3】:

    你可以试试这个。

    s = [{'a':1,'b':2},{'a':3},{'a':2}]
    s=[{'a':d['a']} for d in s]
    # [{'a': 1}, {'a': 3}, {'a': 2}]
    

    【讨论】:

      【解决方案4】:

      如果你想要一个只有 a 键的单例字典列表,你可以这样做:

      >>> [{'a': d.get('a')} for d in s]
      [{'a': 1}, {'a': 3}, {'a': 2}]
      

      但这似乎更适合元组列表:

      >>> [('a', d.get('a')) for d in s]
      [('a', 1), ('a', 3), ('a', 2)]
      

      来自dict.get 的文档:

      如果键在字典中,则返回键的值,否则返回默认值。如果未给出默认值,则默认为None,因此此方法永远不会引发Key Error

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-05-23
        • 2019-03-28
        • 2015-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-29
        相关资源
        最近更新 更多