python中的有序字典

转载 2013年12月05日 12:16:28

转自:http://zoomq.qiniudn.com/ZQScrapBook/ZqFLOSS/data/20111219235951/

Python中的有序字典(OrderedDict)

很早以前就知道的东西,不过刚才看了一下,好像还是有记一下的必要。

问题是这样的:我们都知道Python的字典(dict)是无序的,如果我们希望这个字典有序怎么办?这个功能其实在Python的2.7和3.1里得到了实现,就是OrderedDict。大家可以参考一下这篇PEP:Adding an ordered dictionary to collections。当然,还有Python的官方文档8.3.6. OrderedDict objects由于Python 2.7已经在发布,所以这个问题倒也不是很大。

不过,我现在仍在使用Python 2.6,估计在一个月之内还不会换2.7,那么怎么办呢?像这位老兄一样,自己实现OrderedDict吗?当然,我们也知道,很早以前就有人给出过解答:Python中dict的有序输出(排序)

但其实,还有一个更懒的办法,因为已经有人实现了有序字典,Python Utils 。这个模块里不光实现了OrderedDict类,也实现了其它一些有用的东西,像standout模块也很有用,不过这个不是本文的重点。我们只需要装一下Python Utils,然后读一下文档就行,不需要再自己考虑实现一个有序字典。

PS: gentoo的用户可以直接安装Python Utils模块,运行如下命令即可:

$ emerge pythonutils


django中也自带了一个有序的字典,转自:http://blog.csdn.net/jianhong1990/article/details/8983583

根据名字来理解sorteddict:排序过的字典。它支持按索引来操作字典。

A dictionary that keeps its keys in the order in which they're inserted.

它提供了两个有用的方法

[python] view plaincopy
  1. insert(index, key, value)  
  2. value_for_index(index)  

注意事项:

[python] view plaincopy
  1. d = SortedDict({  
  2.     'b'1,  
  3.     'a'2,  
  4.     'c'3  
  5. })  


上述方法是无效的,sorteddict不知道插入顺序。

下面的方法是有效的:

[python] view plaincopy
  1. from django.utils.datastructures import SortedDict  
  2. d2 = SortedDict()  
  3. d2['b'] = 1  
  4. d2['a'] = 2  
  5. d2['c'] = 3  

最后一个demo:

[python] view plaincopy
  1. from django.utils.datastructures import SortedDict  
  2. d2 = SortedDict()  
  3. d2['b'] = 1  
  4. d2['a'] = 2  
  5. d2['c'] = 3  
  6. print d2  
  7. d2.insert(2,'f',4)  
  8. print d2  
  9. print d2.value_for_index(0)  


输出:

[python] view plaincopy
  1. {'b'1'a'2'c'3}  
  2. {'b'1'a'2'f'4'c'3}  
  3. 1  


 




相关文章推荐

python 2-6 如何让字典保持有序collections.OrderedDict

2-6 如何让字典保持有序collections.OrderedDict传统字典默认字典在存储完以后不保证存储的顺序 dict1 = {'a':1,'b':2,'c':3} print dict1 ...

python中的有序字典OrderedDict

1. OrderedDict 有序字典 OrderedDict是dict的子类,它记住了内容添加的顺序。 比较时,OrderedDict要内容和顺序完全相同才会视为相等。 ...

python 有序字典

#coding=utf-8 #实现一个有序字典类 import bisect class OrderedDict(object): def __init__(self, dictionary =...

Python有序字典

一、 defaultdict 使用dict时,如果引用的Key不存在,就会抛出KeyError。如果希望key不存在时,返回一个默认值,就可以用defaultdict: >>> from co...

Python:使用Counter进行计数统计及collections模块

计数统计就是统计某一项出现的次数。实际应用中很多需求需要用到这个模型。比如测试样本中某一指出现的次数、日志分析中某一消息出现的频率等等‘这种类似的需求有很多实现方法。下面就列举几条。 (1)使用d...

Python: sort,sorted,OrderedDict的用法

python对容器内数据的排序有两种,一种是容器自己的sort函数,一种是内建的sorted函数。 sort函数和sorted函数唯一的不同是,sort是在容器内排序,sorted生成一个新的排...

python--有序字典

字典是python开发中很常用的一种数据结构,但dict有个缺陷(其实也不算缺陷),迭代时并不是按照元素添加的顺序进行,可能在某些场景下,不能满足我们的要求。有几种解决方法: 1、使用Ord...

Python 有序字典简介

Table of Contents 1. 有序字典-OrderedDict简介1.1. 示例 1.2. 相等性 1.3. 注意 2. 参考资料有序字典-OrderedDict简介示例有序字典和通常字典...

编程学习之python 有序字典的学习

OrderedDict是dict的子类,它记住了内容添加的顺序。 使用方法: import collections d = collections.OrderedDict() d['a'] = 'A...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)