Python - 根据总和排序列表

时间:2013-11-09 05:00:51

标签: python list sorting

我想根据每个内部列表的总和对包含列表的列表进行排序。

这是我目前的片段

vectors = []
for i in range(0, 10):
    vectors.append(generate_vector()) # generate_vector() works, creates a list

for vector in vectors:
    coin_list = findbest(vector) # findbest(vector) outputs a list
    print coin_list, fitness(coin_list) # fitness(coin_list) gives the sum of coin_list

我想根据适应度(coin_list)的结果从低到高对矢量进行排序。最好的方法是什么?

2 个答案:

答案 0 :(得分:11)

您可以在排序函数中使用key参数

data = [[1,2,3], [14, 7], [5, 6, 1]]
print sorted(data, key=sum)

<强>输出

[[1, 2, 3], [5, 6, 1], [14, 7]]

如果您想进行排序

data = [[1,2,3], [14, 7], [5, 6, 1]]
data.sort(key=sum)
print data

<强>输出

[[1, 2, 3], [5, 6, 1], [14, 7]]

修改以防万一,如果您想知道如何按降序排序,可以使用reverse这样的参数

data.sort(key=sum, reverse=True)
sorted(data, key=sum, reverse=True)

所以,在你的情况下

vectors = [generate_vector() for i in range(0, 10)]
print sorted([findbest(vector) for vector in vectors], key=sum)

多数民众赞成。

答案 1 :(得分:3)

vectors = []
for i in range(0, 10):
    vectors.append(generate_vector()) # generate_vector() works, creates a list

for vector in vectors:
    coin_list = findbest(vector) # findbest(vector) outputs a list
    print sorted(fitness(coin_list), key=sum)