python上的复杂排序,非常简单但有趣的bug
我想用“集合”或“a”进行排序。我尝试使用下面的信息python上的复杂排序,非常简单但有趣的bug,python,sorting,Python,Sorting,我想用“集合”或“a”进行排序。我尝试使用下面的信息 >>> sorted(student_objects, key=attrgetter('grade', 'age')) [('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)] 该函数适用于“count”,但不适用于“set”、“a” class Number: def __init__(self, sets, count, a): sel
>>> sorted(student_objects, key=attrgetter('grade', 'age'))
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]
该函数适用于“count”,但不适用于“set”、“a”
class Number:
def __init__(self, sets, count, a):
self.sets = sets
self.count = count
self.a = a
def __repr__(self):
return repr((self.sets, self.count, self.a))
number_object=[([1, 3, 7], 2, 3), ([3, 7], 2, 2), ([2, 4], 2, 2), ([1, 7], 9, 2), ([1, 3], 2, 2), (7, 2, 0), (4, 2, 0), (3, 3, 0), (2, 2, 0), (1, 2, 0)]
我想使用下面的一个,但它不起作用。我用同样的方式介绍网页
sorted(student_objects, key=attrgetter('sets', 'count'))
有趣的是,计数可以工作,但另一个不行
试了几次之后,我决定用另一种方法。我可以用这个指令得到同样的结果
s=sorted(number_object, key=itemgetter(0), reverse=True )
sorted(s, key=itemgetter(1), reverse=True )
但我很好奇为什么原来的那个不起作用。是否有人擅长python???如果您遵循您提供的链接,您将意识到必须像下面这样实例化您的对象:
number_objects = [Number([1, 3, 7], 2, 3),
Number([3, 7], 2, 2),
.......
]
那么
应该有用
例如:
from operator import attrgetter
class Number:
def __init__(self, sets, count, a):
self.sets = sets
self.count = count
self.a = a
def __repr__(self):
return repr((self.sets, self.count, self.a))
number_objects = [Number([1, 3, 7], 2, 3), Number([3, 7], 2, 2),
Number([2, 4], 2, 2), Number([1, 7], 9, 2),
Number([1, 3], 2, 2)]
print sorted(number_objects, key=attrgetter('sets', 'count'))
产生:
[([1, 3], 2, 2), ([1, 3, 7], 2, 3), ([1, 7], 9, 2), ([2, 4], 2, 2), ([3, 7], 2,
2)]
您正在尝试使用不同长度的列表作为搜索键。您希望如何以有意义的方式对它们进行排序?“它不工作”是什么意思?
排序(**student**\u objects,key=attrgetter('set','count'))
?这真的没有什么意义。你的number\u对象
根本不使用你的number
类。如果不使用您定义的类,您希望发生什么?“有人擅长python吗?”这是一个很好的问题,不容易回答。“bug”既不琐碎也不有趣。“bug”似乎是未能实际创建预期类的对象。
[([1, 3], 2, 2), ([1, 3, 7], 2, 3), ([1, 7], 9, 2), ([2, 4], 2, 2), ([3, 7], 2,
2)]