如何为字典列表中的特定键获取一组唯一的值?

How do I get a unique set of values for a specific key in a list of dictionaries?

我正在使用 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}

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

你可以这样做:

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() 并检查 key 在哪里 a

另一种简化事情的方法:

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

print(s)

你可以简单地做:

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)

希望我已经了解您的需求。谢谢