如何从python对象列表中获取唯一值

时间:2014-09-25 16:22:58

标签: python list

我有一个班级:

class Car:
    make
    model
    year

我有一个汽车列表,想要获得我的汽车中的独特车型列表。

该列表可能是成千上万的项目。最好的方法是什么?

感谢。

5 个答案:

答案 0 :(得分:20)

使用set comprehension。集合是唯一元素的无序集合,这意味着将删除任何重复项。

cars = [...] # A list of Car objects.

models = {car.model for car in cars}

这会迭代您的列表cars并最多添加一次car.model值,这意味着它将是一个独特的集合。

答案 1 :(得分:1)

如果您想找到只出现过一次的汽车:

from collections import Counter
car_list = ["ford","toyota","toyota","honda"]
c = Counter(car_list)
cars = [model for model in c if c[model] == 1 ]
print cars
['honda', 'ford']

答案 2 :(得分:1)

models=[]
models.extend(car.model for car in cars)
models=list(set(models))

答案 3 :(得分:0)

现在,这取决于您所说的独特性。如果您的意思是完全相同的对象,那么这应该起作用:

def check_all_objects_unique(objects: List[Any]) -> bool:
unique_objects = set(objects)
if len(unique_objects) == len(objects):
    return True
elif len(unique_objects) < len(objects):
    return False

如果“唯一性”是指具有相同属性值的对象,那么此处的其他答案将对您有所帮助。

答案 4 :(得分:0)

在类中添加一个返回唯一列表的方法

def unique(list1):
    # intilize a null list
    unique_list = []

    # traverse for all elements
    for x in list1:
        # check if exists in unique_list or not
        if x not in unique_list:
            unique_list.append(x)

    return unique_list

否则,

如果您想传递品牌、型号年份的字典,那么您可以使用 Pandas 数据框来获取唯一值。