Python—在对象列表上使用set<;类别';xyz.models.abc'&燃气轮机;
设置 我有一个10000个类对象的列表(django模型)。虽然它们都是唯一的,但我想根据class属性缩小这个列表Python—在对象列表上使用set<;类别';xyz.models.abc'&燃气轮机;,python,django,algorithm,python-2.7,set,Python,Django,Algorithm,Python 2.7,Set,设置 我有一个10000个类对象的列表(django模型)。虽然它们都是唯一的,但我想根据class属性缩小这个列表 class mymodel(): field1 = field2 = 我得到的对象在field2的基础上是不同的。 但我想在field1的基础上缩小。字段1对于少数对象是通用的 例如,当前列表有10000个对象。如果按field1缩小它,它将包含大约3000个独特的对象 我不认为set提供了这样的设施?还有其他功能或方法吗?django对象的“列表”是查
class mymodel():
field1 =
field2 =
我得到的对象在field2的基础上是不同的。
但我想在field1的基础上缩小。字段1对于少数对象是通用的
例如,当前列表有10000个对象。如果按field1缩小它,它将包含大约3000个独特的对象
我不认为set提供了这样的设施?还有其他功能或方法吗?django对象的“列表”是查询集吗?如果是这样,一种更快、内存占用更少的方法就是运行查询
result = []
seen = set()
for obj in objects:
if obj.field1 not in seen:
seen.add(obj.field1)
result.append(obj)
- 请注意,这仅适用于PostgreSQL
unique_objs = {obj.field1:obj for obj in objects}.values()
unique_objs = {obj.field1:obj for obj in objects}.values()