字典的排序¶
字典的排序,可以使用sorted()
函数,语法如下:
iterable
表示可以迭代的对象,例如可以是dict.items()
、dict.keys()
等;key
是一个函数,用来选取参与比较的元素;reverse
则是用来指定排序是倒序还是顺序,reverse=true
则是倒序,reverse=false
时则是顺序,默认时reverse=false
。
sorted函数按key值对字典排序¶
直接使用sorted(d.keys())
就能按key值对字典排序,这里是按照顺序对key
值排序的,如果想按照倒序排序的话,则只要将reverse
置为true
即可。
dd = {'borisakunin': 4691, 'doctor_liza': 3046, 'tareeva': 2970, 'cheger': 2887, 'karial': 2717, 'snorapp': 2707, 'masha_koroleva': 2683, 'elladkin': 2616, 'samoleg': 2597}
>>> sorted(dd.keys())
['borisakunin', 'cheger', 'doctor_liza', 'elladkin', 'karial', 'masha_koroleva', 'samoleg', 'snorapp', 'tareeva']
>>> sorted(dd.keys(),reverse=True)
['tareeva', 'snorapp', 'samoleg', 'masha_koroleva', 'karial', 'elladkin', 'doctor_liza', 'cheger', 'borisakunin']
sorted函数按value值对字典排序¶
要对字典的value
排序则需要用到key
参数,常使用lambda表达式的方法,如下:
>>> sorted(dd.items(),key=lambda item:item[1])
[('samoleg', 2597), ('elladkin', 2616), ('masha_koroleva', 2683), ('snorapp', 2707), ('karial', 2717), ('cheger', 2887), ('tareeva', 2970), ('doctor_liza', 3046), ('borisakunin', 4691)]
>>> sorted(dd.items(),key=lambda item:item[1],reverse=True)
[('borisakunin', 4691), ('doctor_liza', 3046), ('tareeva', 2970), ('cheger', 2887), ('karial', 2717), ('snorapp', 2707), ('masha_koroleva', 2683), ('elladkin', 2616), ('samoleg', 2597)]
这里的dd.items()
实际上是将dd
转换为可迭代对象,items()
方法将字典的元素转化为了元组,而这里key
参数对应的lambda
表达式的意思则是选取元组中的第二个元素作为比较对象,如果写作key=lambda item:item[0]
的话则是选取第一个元素作为比较对象,也就是key
值作为比较对象。
注意排序函数sorted()
返回值是一个list
,而原字典中的名值对被转换为了list
中的元组。
最后更新:
2022年10月15日 01:02:48
创建日期: 2022年9月10日 03:12:31
创建日期: 2022年9月10日 03:12:31
Contributers: