跳转至

字典的排序

字典的排序,可以使用sorted()函数,语法如下:

sorted(iterable,key,reverse)
  1. iterable表示可以迭代的对象,例如可以是dict.items()dict.keys()等;
  2. key是一个函数,用来选取参与比较的元素;
  3. 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
Contributers: yangjh