我有一个班级:
class Car:
make
model
year
我有一个汽车列表,想要获得我的汽车中的独特车型列表。
该列表可能是成千上万的项目。最好的方法是什么?
感谢。
答案 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 数据框来获取唯一值。