sorted()函数有三个参数。iterable(可迭代对象), key=None(比较的参数:只有一个,默认为无), reverse=False(排序规则,默认不翻转,从小到大)。
用sorted()对于字典的排序可以归结为两种。一直接排,二用函数排。
片段一:输出字典。取出键·值·键值对。
片段二:利用键·值进行直接进行排序。
片段三:利用键值对(元组)通过函数间接排序。上半部分是自定函数,下面是系统函数。多用了key 参数
片段四:纯字典排序 .sort()只能对列表排序,用sorted()可以对对象进行排序。因此数据处理上有两种方法:一种是将字典的内部数据类型dict_items 转化成列表(列表的元素是键值对元组)排,用列表专用函数sort 排(用匿名函数指定列表元组中的排列对象是键还是值)。第二种就是dict_items 数据类型即“内部元组型” 用sorted 排列,本段代码只给出后一种。从结果看,排完都是列表。显然前面一种方法有点多此一举。
dict1={'a':2,'b':3,'c':8,'d':4}
print(dict1) #都要加s 加括号
print(dict1.keys())#注意类型是dict_keys,不是列表,不是列表,不是列表,用时要转换list()
print(dict1.values())#注意类型是dict_valuse
print(dict1.items())#注意类型是dict_items
print(sorted(dict1,reverse = True)) #字典排序,不声明,键值对默认键
print(sorted(dict1.keys(),reverse = True))
print(sorted(dict1.values(),reverse = True))#1.默认的是从小到大升序排列。reverse=True,意为翻转为真,修改默认,执行从大到小排
#2.True中的T是大写。单词不要拼错。
#3.注意!这是一种取出字典里的元素进行排序的,会改变数据变成列表。希望是字典的用下面方法
print(sorted(dict1.items(),reverse = True))#dict1.items(),得键值元祖列表。匿名函数定义排序规则,x指元组,x[0]是键,x[1]是值。
print(sorted(dict1.items(),key=lambda x:x[0],reverse = True))
print(sorted(dict1.items(),key=lambda x:x[1],reverse = True))
from operator import itemgetter#上面是自定义函数,下面是系统函数(要导入模块!)
print(sorted(dict1.items(),key=itemgetter(0),reverse = True))
print(sorted(dict1.items(),key=itemgetter(1),reverse = True))
#使用list()可将元祖列表转化为字典。结果便于上面吻合。
#不改变数据结构,即纯字典排序
from operator import itemgetter
dict1={'a':2,'b':3,'c':8,'d':4}
a = sorted(dict1.items(),key = itemgetter(1),reverse = True)
print(a)
print(list(a) )
print(set(a) )
print(dict(a) )
对应的输出:
{'a': 2, 'b': 3, 'c': 8, 'd': 4}
dict_keys(['a', 'b', 'c', 'd'])
dict_values([2, 3, 8, 4])
dict_items([('a', 2), ('b', 3), ('c', 8), ('d', 4)])
['d', 'c', 'b', 'a']
['d', 'c', 'b', 'a']
[8, 4, 3, 2]
[('d', 4), ('c', 8), ('b', 3), ('a', 2)]
[('d', 4), ('c', 8), ('b', 3), ('a', 2)]
[('c', 8), ('d', 4), ('b', 3), ('a', 2)]
[('d', 4), ('c', 8), ('b', 3), ('a', 2)]
[('c', 8), ('d', 4), ('b', 3), ('a', 2)]
[('c', 8), ('d', 4), ('b', 3), ('a', 2)]
[('c', 8), ('d', 4), ('b', 3), ('a', 2)]
{('a', 2), ('c', 8), ('d', 4), ('b', 3)}
{'c': 8, 'd': 4, 'b': 3, 'a': 2}
编程小白,若有错误以及不妥之处,欢迎大佬批评指正。
编辑小白,sublimeText 的部分代码高亮在此处消失了,所以看着有点乱不是很舒服。
尊重原创,本文的参考链接。
python3字典的排序
https://blog.youkuaiyun.com/ustbbsy/article/details/79637594#commentsedit
Python operator.itemgetter函数理解
https://blog.youkuaiyun.com/qq_22022063/article/details/79019294