【问题标题】:How do I get a unique set of values for a specific key in a list of dictionaries?如何获取字典列表中特定键的一组唯一值?
【发布时间】:2020-09-28 16:48:11
【问题描述】:

我正在使用 Python 3.8。如果我想为字典数组获取一组唯一的值,我可以执行以下操作

>>> lis = [{"a": 1, "b": 2}, {"a": 3, "b": 4}]
>>> s = set( val for dic in lis for val in dic.values())
>>> s
{1, 2, 3, 4}

但是,如果我只想要字典键“a”的一组唯一值,我将如何改进上述内容?在上面,答案是

{1, 3}

我假设数组中的每个字典都有相同的键集。

【问题讨论】:

    标签: python python-3.x dictionary set unique-values


    【解决方案1】:

    你可以这样做:

    lis = [{"a": 1, "b": 2}, {"a": 3, "b": 4}]
    # assuming the variable key points to what you want
    key = 'a'
    a_values = set(dictionary[key] for dictionary in lis)
    

    我希望我已经了解您在寻找什么。谢谢。

    【讨论】:

    • @alani,感谢您发现我的错误,在 dart 中编码一段时间让我在语法上打乱了。
    【解决方案2】:

    你可以这样做:

    lis = [{"a": 1, "b": 2}, {"a": 3, "b": 4}]
    search_key = 'a'
    s = set(val for dic in lis for key, val in dic.items() if key == search_key)
    
    print(s)
    
    #OUTPUT: {1, 3}
    

    使用dic.items() 代替dic.values() 并检查keya 的位置。

    另一种简化事情的方法:

    lis = [{"a": 1, "b": 2}, {"a": 3, "b": 4}]
    search_key = 'a'
    s = set(dic.get(search_key) for dic in lis)
    
    print(s)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      相关资源
      最近更新 更多