如何在追加列表时对列表进行排序? Python 3.3

时间:2016-04-05 14:56:28

标签: python sorting

我最近使用此代码从另一个问题回答:

foo = []
for line in test:
    x = line.split()
    y = int(x[1])
    foo.append({"Name":x[0],"Average":str(y)})
    print(x)
    sorted_x = sorted(foo)
    print sorted_x

我用它来排序平均值。但是,代码无法对产生结果的平均值进行排序:[{'Average': '2.3333333333333335', 'Name': 'Alex'}] [{'Average': '1.0', 'Name': 'Harry'}] [{'Average': '9.0', 'Name': 'Lick'}]

如图所示,它没有从最高到最低或从最低到最高排序。我怎样才能更改此代码,以便从最高到最低或反之分类?

由于

2 个答案:

答案 0 :(得分:1)

sorted(foo, key=lambda x:x['Average'])

https://docs.python.org/3/library/functions.html#sorted

你可能更喜欢foo.sort(lambda x:x['Average']),它返回None但是就地foo本身排序

如果要将元素插入排序列表import bisect

PS如果print sorted_x没有抛出语法错误,那么你就是在Python 2上

答案 1 :(得分:1)

每次更新后对列表进行排序对于小型列表可能没问题,但是对于长列表来说会耗费大量资源。

如果您需要在更新列表时自动维护排序顺序,请尝试SortedContainers