为什么Python内置的.sort()无法在我的for循环中工作?
在我在Python3.6中编写的以下函数中,有一个for循环使用.sort(key=operator.itemgetter(0))对列表进行排序。但是.sort方法无法工作。结果,它只向我打印了一个“无” 请给我一些建议。多谢各位为什么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
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
可能的重复项