sort函数
如果对python中的列表进行排序,可以使用List类的成员函数sort,该函数会在原空间上进行操作,对列表本身进行修改,不返回副本。 语法如下:
L.sort(cmp=None, key=None, reverse=False)
对列表本身进行修改
sorted函数
sorted函数就比sort函数要强大许多了,sort只能对列表进行排序 sorted可以对 所有可迭代类型 进行排序,并且返回新的已排序的列表。语法如下:
xxx = sorted(iterable, cmp=None, key=None, reverse=False)
返回新的已排序副本,原始输入不变
基础知识
iterable:是可迭代类型; cmp:用于比较的函数,比较什么由key决定; key:用列表元素的某个属性或函数进行作为关键字,有默认值,迭代集合中的一项; reverse:排序规则. reverse = True 降序 或者 reverse = False 升序,有默认值。 返回值:是一个经过排序的可迭代类型,与iterable一样。
参数说明: (1) cmp参数 cmp接受一个函数,拿整形举例,形式为: def f(a,b): return a-b 如果排序的元素是其他类型的,如果a逻辑小于b,函数返回负数;a逻辑等于b,函数返回0;a逻辑大于b,函数返回正数就行了
(2) key参数 key也是接受一个函数,不同的是,这个函数只接受一个元素,形式如下 def f(a): return len(a) key接受的函数返回值,表示此元素的权值,sort将按照权值大小进行排序
(3) reverse参数 接受False 或者True 表示是否逆序
💡可迭代元素经常会用到 items() items() 是字典中的一个方法,返回由元组组成的列表。
💡比较函数经常会用到operator.itemgetter函数 operator模块提供的itemgetter函数用于获取对象的哪些维的数据,参数为一些序号。
>>> a =
{"tuffy":2
, "spike":10
, "tom":8
, "tyke":3
, "jerry":7
}
>>> print a
.items
()
>>>
[('tom', 8
), ('spike', 10
), ('tyke', 3
), ('jerry', 7
), ('tuffy', 2
)]
>>>
from operator import itemgetter
>>>c = sorted
(a
.items
(),key=itemgetter
(1
))
>>>print c
>>>
[('tuffy', 2
), ('tyke', 3
), ('jerry', 7
), ('tom', 8
), ('spike', 10
)]
项目例子
from collections
import defaultdict
import Target
import de_weight
import Similarity_for_TextRank_genesis
as Sim
from operator
import itemgetter
from tqdm
import tqdm
Titlewords
, TitlewordsPlus
= Target
.getTitle
()
print('Titlewords -> ', Titlewords
)
print('TitlewordsPlus -> ', TitlewordsPlus
)
TitlewordsAll
= Titlewords
+ TitlewordsPlus
print('TitlewordsAll -> ', TitlewordsAll
)
Content4Title
= defaultdict
(int)
de_content
= de_weight
.getDeTarget
()
print('de_content -> ', de_content
)
for i
in tqdm
(TitlewordsAll
):
for j
in tqdm
(de_content
):
Content4Title
[(i
, j
)] = Sim
.checkIt
(i
, j
)
Content4Title
.items
()
Sort_Content4Title
= sorted(Content4Title
.items
(), key
=itemgetter
(1), reverse
=True)
print()
print('=====结果展示=====')
print(Sort_Content4Title
)
mid_Content4Title
= []
for x
in Sort_Content4Title
:
if x
[0][1] not in mid_Content4Title
:
mid_Content4Title
.append
(x
[0][1])
print()
print('mid_Content4Title -> ', mid_Content4Title
)
fin_Content4Title
= mid_Content4Title
[:30]
print('fin_Content4Title -> ', fin_Content4Title
)
fin_Content4Title
= ','.join
(fin_Content4Title
)
def Content4TextRank():
f
= open('/Users/atom-g/CodingPark622/DanMu/Content4TextRank_QianZhai_WSC.txt', 'w', encoding
='UTF-8')
f
.write
(fin_Content4Title
)
f
.flush
()
f
.close
()