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

uan*_*cau 1 python sorting list

例如我有一个清单

list = [['word1', 0.234], ['word2', 0.2], ['word3', 0.5], ['word4', 0,67]]
Run Code Online (Sandbox Code Playgroud)

我想按重要性排序。重要性是指该值距0.5的距离。排序后的列表应为:

list = [['word2', 0.2], ['word1', 0.234], ['word4', 0.67], ['word3', 0,5]]
Run Code Online (Sandbox Code Playgroud)

首先,我通过编写基于气泡排序的简单函数解决了它,但是它非常慢。

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
Run Code Online (Sandbox Code Playgroud)

如何使用sorted()函数解决?

Mar*_*ans 5

要按距离排序,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))
Run Code Online (Sandbox Code Playgroud)

这将为您提供以下输出:

[['word2', 0.2], ['word1', 0.234], ['word4', 0.67], ['word3', 0.5]]
Run Code Online (Sandbox Code Playgroud)