我想创建一个方法,用一个键对带有寄存器的数组进行排序。
我有这个:
class Test:
pass
def init():
test = Test()
test.number= int(input('Enter a number'))
test.genre = int(input('Enter a number'))
test.quantity = int(input('Enter a number'))
return test
def show(ar):
for i in range(len(ar)):
print('Number', ar[i].number)
def array_sorted():
v = [None]*10
for i in range(0, 10):
v[i] = init()
if i != 0:
if v[i].number < v[i-1].number:
v[i-1], v[i] = v[i], v[i-1]
return v
array = array_sorted()
show(array)
OUT:
Number 2798
Number 4036
Number 4164
Number 6613
Number 9176
Number 1891
Number 9395
Number 252
Number 6255
Number 9505
在&#34; OUT&#34;我使用&#34; random.randint&#34;生成对象。方法作为一个例子,但你可以看到数字没有排序。我想创建一个以Test()对象为元素的数组。但每当我在其中收取一个新的寄存器时,该数组按字段&#34; number&#34;进行排序。我无法使用任何默认方法,例如&#34; sort()&#34;方法
答案 0 :(得分:2)
此循环只允许新条目与
之前的条目交换for i in range(0, 10):
v[i] = init()
if i != 0:
if v[i].number < v[i-1].number:
v[i-1], v[i] = v[i], v[i-1]
您需要将每个v[i]
与每个v[0]
- v[i-1]
进行比较,以找出它适合的位置。
这意味着您需要在
中嵌套另一个循环答案 1 :(得分:0)
# sort the list in place
li.sort(key=lambda x: x.genre)
# return a new list
newLi = sorted(li, key=lambda x: x.genre)