python 中 dict 的 sorted 排序
我们知道 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。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论