2025年6月5日 星期四 乙巳(蛇)年 三月初九 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

python 中 dict 的 sorted 排序

时间:12-14来源:作者:点击数:5

我们知道 Python 的内置 dictionary 数据类型是无序的,通过 key 来获取对应的 value。可是有时我们需要对 dictionary 中的 item 进行排序输出,可能根据 key,也可能根据 value 来排。到底有多少种方法可以实现对 dictionary 的内容进行排序输出呢?

下面摘取了一些精彩的解决办法。

按 key 排序

最简单的方法,这个是按照 key 值排序

  • def sortedDictValues1(adict):
  • items = adict.items()
  • items.sort()
  • return [value for key, value in items]

又一个按照 key 值排序,貌似比上一个速度要快点

  • def sortedDictValues2(adict):
  • keys = adict.keys()
  • keys.sort()
  • return [dict[key] for key in keys]

还是按 key 值排序,据说更快。而且当 key 为 tuple 的时候照样适用

  • def sortedDictValues3(adict):
  • keys = adict.keys()
  • keys.sort()
  • return map(adict.get, keys)

一行语句搞定

  • [(k,di[k]) for k in sorted(di.keys())]

按 value 排序

根据 value 排序的,先把 item 的 key 和 value 交换位置放入一个list中,再根据 list 每个元素的第一个值,即原来的 value 值,排序:

  • def sort_by_value(d):
  • items=d.items()
  • backitems=[[v[1],v[0]] for v in items]
  • backitems.sort()
  • return [ backitems[i][1] for i in range(0,len(backitems))]

还是一行搞定

  • [ v for v in sorted(d.values())]

用 lambda 表达式来排序,更灵活:

  • sorted(d.items(), lambda x, y: cmp(x[1], y[1]))

或反序:

  • sorted(d.items(), lambda x, y: cmp(x[1], y[1]), reverse=True)

用 sorted 函数的 key=参数

按照 key 进行排序

  • print sorted(dict1.items(), key=lambda d: d[0])

按照 value 进行排序

  • print sorted(dict1.items(), key=lambda d: d[1])

下面给出 python 内置 sorted 函数的帮助文档:

  • sorted(...)
  • sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list

看了上面这么多种对 dictionary 排序的方法,其实它们的核心思想都一样,即把 dictionary 中的元素分离出来放到一个 list 中,对 list 排序,从而间接实现对 dictionary 的排序。这个元素可以是 key,value 或者 item。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐