为什么Python内置的.sort()无法在我的for循环中工作?

为什么Python内置的.sort()无法在我的for循环中工作?,python,list,sorting,for-loop,Python,List,Sorting,For Loop,在我在Python3.6中编写的以下函数中,有一个for循环使用.sort(key=operator.itemgetter(0))对列表进行排序。但是.sort方法无法工作。结果,它只向我打印了一个“无” 请给我一些建议。多谢各位 import operator ... def phrase_similarity(phrase): phrase_vec = phrase_model[phrase] CosDisList = [] for a_word in phrase_model.key

在我在Python3.6中编写的以下函数中,有一个for循环使用.sort(key=operator.itemgetter(0))对列表进行排序。但是.sort方法无法工作。结果,它只向我打印了一个“无”

请给我一些建议。多谢各位

import operator
...

def phrase_similarity(phrase):

phrase_vec = phrase_model[phrase]
CosDisList = []

for a_word in phrase_model.keys():
    a_val = phrase_model[a_word]
    cos_dis = cosine_similarity(phrase_vec, a_val)
    StrPhrase = str( phrase + ":" + a_word)
    CosDisBind = [float(str(cos_dis.tolist()).strip('[[]]')), StrPhrase]
    CosDisList.append(CosDisBind)
    CosDisListSort = CosDisList.sort(key=operator.itemgetter(0), reverse=True) #Why .sort() method doesn't work here?

print(CosDisListSort)

list.sort
就地排序。它修改调用它的
列表
对象,但返回
None
。因此,不应重新分配返回值。只是

CosDisList.sort(key=operator.itemgetter(0), reverse=True)
就够了。内置函数将返回一个排序列表,同时保持传递的iterable不变。在这里,您必须指定结果:

new_list = sorted(CosDisList, key=operator.itemgetter(0), reverse=True)

list.sort
执行
in place
排序,这意味着
list
将自行排序,并返回
None
可能的重复项