Python中字典(dict)和列表(list)的排序方法实例
程序员文章站
2022-05-05 22:55:09
...
一、对列表(list)进行排序
推荐的排序方式是使用内建的sort()方法,速度最快而且属于稳定排序
复制代码 代码如下:
>>> a = [1,9,3,7,2,0,5]
>>> a.sort()
>>> print a
[0, 1, 2, 3, 5, 7, 9]
>>> a.sort(reverse=True)
>>> print a
[9, 7, 5, 3, 2, 1, 0]
>>> b = ['e','a','be','ad','dab','dbc']
>>> b.sort()
>>> print b
['a', 'ad', 'be', 'dab', 'dbc', 'e']
对列表的排序是遵循DSU(decorate-sort-undecorate)模式的,序列是安装条目的顺序进行比较的,对刚刚例子中的字符串来说,就是按照从左到右的顺序,逐个字符进行比较,一旦得出结果就停止比较。
>>> a = [1,9,3,7,2,0,5]
>>> a.sort()
>>> print a
[0, 1, 2, 3, 5, 7, 9]
>>> a.sort(reverse=True)
>>> print a
[9, 7, 5, 3, 2, 1, 0]
>>> b = ['e','a','be','ad','dab','dbc']
>>> b.sort()
>>> print b
['a', 'ad', 'be', 'dab', 'dbc', 'e']
对列表的排序是遵循DSU(decorate-sort-undecorate)模式的,序列是安装条目的顺序进行比较的,对刚刚例子中的字符串来说,就是按照从左到右的顺序,逐个字符进行比较,一旦得出结果就停止比较。
二、对字典(dict)进行排序
其实字典(dict)是一个无序序列,谈不上排序,我们只能按照字典的键/值进行排序,然后让对应值/键也处于同样的顺序
任何对字典的排序问题,都要最终归结为对字典(dict)的键(key)或者值(value)组成的列表(list)的排序
1、按字典(dict)的键进行排序[1]
复制代码 代码如下:
def sortedDictValues(adict,reverse=False):
keys = adict.keys()
keys.sort(reverse=reverse)
return [adict[key] for key in keys]
如果需要同时返回键和值的话,之用将最后的return语句改为:
def sortedDictValues(adict,reverse=False):
keys = adict.keys()
keys.sort(reverse=reverse)
return [adict[key] for key in keys]
如果需要同时返回键和值的话,之用将最后的return语句改为:
复制代码 代码如下:
return [(key,adict[key]]) for key in keys]
还有一种书写简单的方法,就是使用内置的sorted()方法进行排序:
还有一种书写简单的方法,就是使用内置的sorted()方法进行排序:
复制代码 代码如下:
>>> d = {'c':1,'e':'5','b':7}
>>> sorted(d.items())
[('b', 7), ('c', 1), ('e', '5')]
不过性能会有些许的下降,如果很苛求性能,还是使用原生对list.sort()方法比较好
2、按字典(dict)的值进行排序[2]
>>> d = {'c':1,'e':'5','b':7}
>>> sorted(d.items())
[('b', 7), ('c', 1), ('e', '5')]
不过性能会有些许的下降,如果很苛求性能,还是使用原生对list.sort()方法比较好
2、按字典(dict)的值进行排序[2]
复制代码 代码如下:
def sorted_dict(container, keys, reverse):
"""返回 keys 的列表,根据container中对应的值排序"""
aux = [ (container[k], k) for k in keys]
aux.sort()
if reverse: aux.reverse()
return [k for v, k in aux]
同样可以用sorted()方法实现同样的功能:
def sorted_dict(container, keys, reverse):
"""返回 keys 的列表,根据container中对应的值排序"""
aux = [ (container[k], k) for k in keys]
aux.sort()
if reverse: aux.reverse()
return [k for v, k in aux]
同样可以用sorted()方法实现同样的功能:
复制代码 代码如下:
sorted(d.items(), key=lambda d:d[1], reverse=True)
三、结语
通过以上代码的分析,大致总结处以下几条原则:
* 对字典的排序,最终都要归结为对字典的键或者值组成的列表的排序
* 对列表的排序,优先使用内置的list.sort()方法
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
相关文章
相关视频
专题推荐
-
独孤九贱-php全栈开发教程
全栈 170W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
-
玉女心经-web前端开发教程
入门 80W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
-
天龙八部-实战开发教程
实战 120W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习
推荐阅读
-
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
-
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
-
Python中的list(列表)、tuple(元组)、dict(字典)和set(集合)
-
PYTHON中的字典(DICT),列表(LIST),元组(TUPLE)
-
python 实现将字典dict、列表list中的中文正常显示方法
-
Python实现字典排序、按照list中字典的某个key排序的方法示例
-
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
-
Python编程如何对列表中字典元素进行排序的方法详解
-
Python中对元组和列表按条件进行排序的方法示例
-
python中dict字典的查询键值对 遍历 排序 创建 访问 更新 删除基础操作方法
网友评论
文明上网理性发言,请遵守 新闻评论服务协议
我要评论