Python中字典(dict)和列表(list)的排序方法实例

 更新时间:2014年06月16日 11:14:22   投稿:junjie   我要评论
这篇文章主要介绍了Python中字典(dict)和列表(list)的排序方法实例,总结来说优先使用内置的sort()方法进行排序,需要的朋友可以参考下

一、对列表(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)模式的,序列是安装条目的顺序进行比较的,对刚刚例子中的字符串来说,就是按照从左到右的顺序,逐个字符进行比较,一旦得出结果就停止比较。

二、对字典(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语句改为:
复制代码 代码如下:
return [(key,adict[key]]) for key in keys]

还有一种书写简单的方法,就是使用内置的sorted()方法进行排序:
复制代码 代码如下:

>>> 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()方法实现同样的功能:
复制代码 代码如下:
sorted(d.items(), key=lambda d:d[1], reverse=True)

三、结语

通过以上代码的分析,大致总结处以下几条原则:
* 对字典的排序,最终都要归结为对字典的键或者值组成的列表的排序
* 对列表的排序,优先使用内置的list.sort()方法

相关文章

  • Python读取sqlite金沙国际官网文件的方法分析

    Python读取sqlite金沙国际官网文件的方法分析

    这篇文章主要介绍了Python读取sqlite金沙国际官网文件的方法,结合实例形式分析了Python引入sqlite3模块操作sqlite金沙国际官网的读取、SQL命令执行等相关操作技巧,需要的朋友可以参考下
    2017-08-08
  • python+numpy实现的基本矩阵操作示例

    python+numpy实现的基本矩阵操作示例

    这篇文章主要介绍了python+numpy实现的基本矩阵操作,结合实例形式分析了Python使用numpy模块针对矩阵进行创建、增删查改、索引、运算相关操作实现技巧,注释中包含有详细的说明,需要的朋友可以参考下
    2019-07-07
  • Python中py文件引用另一个py文件变量的方法

    Python中py文件引用另一个py文件变量的方法

    下面小编就为大家分享一篇Python中py文件引用另一个py文件变量的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • 详解Python3定时器任务代码

    详解Python3定时器任务代码

    这篇文章主要介绍了Python3定时器任务代码,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Linux下远程连接Jupyter+pyspark部署教程

    Linux下远程连接Jupyter+pyspark部署教程

    这篇文章主要为大家详细介绍了Linux下远程连接Jupyter+pyspark部署教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • Python中的True,False条件判断实例分析

    Python中的True,False条件判断实例分析

    这篇文章主要介绍了Python中的True,False条件判断的用法,实例分析了针对不同数据类型的条件判断用法,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • python中import与from方法总结(推荐)

    python中import与from方法总结(推荐)

    这篇文章主要介绍了python中import与from方法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 在Python的Flask框架中使用日期和时间的教程

    在Python的Flask框架中使用日期和时间的教程

    这篇文章主要介绍了在Python的Flask框架中使用日期和时间的教程,包括对各个时区之间转换的一些处理,需要的朋友可以参考下
    2015-04-04
  • Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解

    Python PyAutoGUI模块控制鼠标和键盘实现自动化任务详解

    这篇文章主要介绍了Python PyAutoGUI模块控制鼠标和键盘实现自动化任务,结合实例形式详细分析了pyautogui模块的安装、导入以及针对鼠标与键盘的各种常见响应操作实现技巧,需要的朋友可以参考下
    2018-09-09
  • Python编程图形库之Pillow使用方法讲解

    Python编程图形库之Pillow使用方法讲解

    今天小编就为大家分享一篇关于Python编程图形库之Pillow使用方法讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12

最新评论