根据属性检查字典列表是否唯一

时间:2018-08-04 08:44:18

标签: python dictionary properties unique

python标准库中是否有一个函数可以根据其中一个字典属性检查列表是否唯一?

类似这样的东西:

is_unique(dict_list, prop="x")

结果:

{"x": 1, "y": 2}, {"x": 2, "y": 2}, {"x": 2, "y": 3}  <- False
{"x": 1, "y": 2}, {"x": 2, "y": 2}, {"x": 3, "y": 3}  <- True

2 个答案:

答案 0 :(得分:2)

您可以天真地做:

def is_unique(dcts, prop):
    return len(dcts) == len(set(d[prop] for d in dcts))

这假定值d[prop]是可哈希的。如果列表很长,那么在构建道具集时,您可能想早点休息(遇到第一个重复项时),就像这样 U9-Forward的解决方案。

答案 1 :(得分:1)

或者:

def is_unique(lod, prop):
    seen=set()
    return not any(i[prop] in seen or seen.add(i[prop]) for i in lod)
LOD=[{"x": 1, "y": 2}, {"x": 2, "y": 2}, {"x": 2, "y": 3}]
print(is_unique(LOD,'x'))

输出:

False