排序首先想到python的sorted()和sort()
sort 与 sorted 区别:
1.sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
2. list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。通俗的说,就是sort没有返回值,sorted有返回值。
sorted 语法: sorted(iterable, key=None, reverse=False)
参数说明:
iterable – 可迭代对象。
key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
因此字典按照键和值进行排序了,也就是在sorted()中的参数key选择键或者值。
import random
testlist=[]
for i in range(20):
testlist.append(random.randint(81,100))
print(testlist)
zi={
}
for x in testlist:
if x not in zi.keys():
zi[x]=testlist.count(x)
print("zi:",zi)
# 按照键排序
ll1=sorted(zi.items(),key=lambda kv:(kv[0]))
print(ll1)
#按照值排序
ll2=sorted(zi.items(),key=lambda kv:(kv[1]))
print(ll2)
输出为:
[88, 97, 90, 88, 99, 95, 95, 95, 86, 93, 97, 90, 95, 98, 100, 86, 99, 90, 84, 84]
zi: {
88: 2, 97: 2, 90: 3, 99: 2, 95: 4, 86: 2, 93: 1, 98: 1, 100: 1, 84: 2}
[(84, 2), (86, 2), (88, 2), (90, 3), (93, 1), (95, 4), (97, 2), (98, 1), (99, 2), (100, 1)]
[(93, 1), (98, 1), (100, 1), (88, 2), (97, 2), (99, 2), (86, 2), (84, 2), (90, 3), (95, 4)]
1.Python 字典 items() 函数以列表返回可遍历的(键, 值) 元组数组。
2.其中的lambda函数可以参考:python的lambda-map-reduce
字典排序列表:
lis = [{
"name" : "Taobao", "age" : 100},
{
"name" : "Runoob", "age" : 7 },
{
"name" : "Google", "age" : 100 },
{
"name" : "Wiki" , "age" : 200 }]
lname=sorted(lis,key=lambda kv:kv['name'])
print(lname)
lage=sorted(lis,key=lambda kv:kv['age'])
print(lage)
输出为:
[{
'name': 'Google', 'age': 100}, {
'name': 'Runoob', 'age': 7}, {
'name': 'Taobao', 'age': 100}, {
'name': 'Wiki', 'age': 200}]
[{
'name': 'Runoob', 'age': 7}, {
'name': 'Taobao', 'age': 100}, {
'name': 'Google', 'age': 100}, {
'name': 'Wiki', 'age': 200}]