Python 如何按照一定的标准对列表进行排序

Python 如何按照一定的标准对列表进行排序,python,list,sorting,Python,List,Sorting,例如,我有一个列表 list = [['word1', 0.234], ['word2', 0.2], ['word3', 0.5], ['word4', 0,67]] 我想按重要性来分类。重要性是指该值与0.5之间的距离。排序后的列表应为: list = [['word2', 0.2], ['word1', 0.234], ['word4', 0.67], ['word3', 0,5]] 首先,我通过编写基于气泡排序的简单函数来解决这个问题,但速度非常慢 def most_interest

例如,我有一个列表

list = [['word1', 0.234], ['word2', 0.2], ['word3', 0.5], ['word4', 0,67]]
我想按重要性来分类。重要性是指该值与0.5之间的距离。排序后的列表应为:

list = [['word2', 0.2], ['word1', 0.234], ['word4', 0.67], ['word3', 0,5]]
首先,我通过编写基于气泡排序的简单函数来解决这个问题,但速度非常慢

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

如何使用sorted()函数进行排序?

要按距离
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))
这将为您提供以下输出:

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

使用参数
。范例

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))
输出:

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

如果您想对列表进行实际排序而不创建新列表,请使用myList.sort(key=lambda x:abs(0.5-x),reverse=True)
而不是使用python 2或3?@Maciek我使用的是python 3。无论如何,问题解决了。您的输出与问题中显示的所需输出不匹配;word4应该是排序列表中的第三个元素。它匹配,问题是word4编号写错了(
0,67
,而不是
0.67
),已更正