我想用'套'或'a'排序。我尝试使用以下信息。
>>> sorted(student_objects, key=attrgetter('grade', 'age'))
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]
http://wiki.python.org/moin/HowTo/Sorting/
该功能适用于'count',但不适用于'sets','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的人?
答案 0 :(得分:2)
如果你按照你提供的链接,你会发现你必须像这样实例化你的对象:
number_objects = [Number([1, 3, 7], 2, 3),
Number([3, 7], 2, 2),
.......
]
然后,
sorted(number_objects, key=attrgetter('sets', 'count'))
应该有用。
例如:
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)]