我最近使用此代码从另一个问题回答:
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'}]
如图所示,它没有从最高到最低或从最低到最高排序。我怎样才能更改此代码,以便从最高到最低或反之分类?
由于
答案 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。