基于属性检查字典列表是否唯一

2024-06-02 06:52:56 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: 函数falsetrue列表标准字典属性is
2条回答

或:

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

你可以天真地做:

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

这假设值d[prop]是可散列的。如果您有很长的列表,您可能希望在构建道具集时提前中断(当遇到第一个重复时),就像这样 U9前锋的解决方案

相关问题 更多 >