简体   繁体   English

如何根据特定标准对列表进行排序

[英]how to sort list according certain criterion

for example I have a list 例如我有一个清单

list = [['word1', 0.234], ['word2', 0.2], ['word3', 0.5], ['word4', 0,67]]

and I want to sort it by importance. 我想按重要性排序。 Importance means how far is the value from 0.5. 重要性是指该值距0.5的距离。 The list after sorting should be: 排序后的列表应为:

list = [['word2', 0.2], ['word1', 0.234], ['word4', 0.67], ['word3', 0,5]]

First I solved it by writing simple function based on bubble sorting but it's very slow. 首先,我通过编写基于气泡排序的简单函数解决了它,但是它非常慢。

def most_interesting_words(seznam):
"""sort list i.e. [['word', spamicity], ...], first tokens whose value was furthest from the neutral value of 
for i in range(len(seznam)):
    for j in range(len(seznam)):
        #if dist_from_05(seznam[i][1]) > dist_from_05(seznam[j][1]):
        if abs(0.5 - seznam[i][1]) > abs(0.5 - seznam[j][1]):
            tmp = seznam[i]
            seznam[i] = seznam[j]
            seznam[j] = tmp
return seznam

How it can be solved with sorted() function? 如何使用sorted()函数解决?

To sort by distance from 0.5 you can use the following sorted() function: 要按距离0.5排序,可以使用以下sorted()函数:

my_list = [['word1', 0.234], ['word2', 0.2], ['word3', 0.5], ['word4', 0.67]]
print(sorted(my_list, key=lambda x: abs(0.5 - x[1]), reverse=True))

This would give you the following output: 这将为您提供以下输出:

[['word2', 0.2], ['word1', 0.234], ['word4', 0.67], ['word3', 0.5]]

Using the parameter key . 使用参数key Example

myList = [['word1', 0.234], ['word2', 0.2], ['word3', 0.5], ['word4', 0.67]]
print(sorted(myList,key= lambda x: abs(0.5-x[1]),reverse=True))

Output: 输出:

[[word2, 0.2], [word1, 0.234], [word4, 0.67], [word3, 0.5]]

If you want to actually sort you list and not create a new one use myList.sort(key= lambda x: abs(0.5-x),reverse=True) instead 如果您想对列表进行实际排序而不创建新列表,请使用myList.sort(key= lambda x: abs(0.5-x),reverse=True)代替

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM