Python的collections模块中的OrderedDict有序字典

如同这个数据结构的名称所说的那样,它记录了每个键值对添加的顺序。

d = OrderedDict()
d['a'] = 1
d['b'] = 10
d['c'] = 8
for letter in d:
  print letter

输出:

a
b
c

如果初始化的时候同时传入多个参数,它们的顺序是随机的,不会按照位置顺序存储。

>>> d = OrderedDict(a=1, b=2, c=3)
OrderedDict([('a', 1), ('c', 3), ('b', 2)])

除了和正常的 dict 相同的方法之外,OrderedDict 还提供了和顺序相关的操作: + popitem(): 返回最后一个插入的键值对,如果 popitem(last=False) 将返回第一个插入的键值对 + reversed:返回一个逆序的 OrderedDict

实例
其实,OrderedDict可以看作是一个字典子类:

import collections
print 'Regular dictionary:'
d = {}
d['a'] = 'A'
d['b'] = 'B'
d['c'] = 'C'
for k, v in d.items():
  print k, v
print '\nOrderDict:'
d = collections.OrderedDict()
d['a'] = 'A'
d['b'] = 'B'
d['c'] = 'C'
for k, v in d.items():
  print k, v

常规dict并不跟踪插入顺序,迭代处理会根据键在散列表中存储的顺序来生成值。在OrderDict中则相反,它会记住元素插入的顺序,并在创建迭代器时使用这个顺序。

Regular dictionary:
a A
c C
b B
OrderDict:
a A
b B
c C

常规dict在检查相等性是会查看其内容,OrderDict中还会考虑元素增加的顺序。

(0)

相关推荐

  • python对字典进行排序实例

    本文实例讲述了python对字典进行排序的方法,是非常实用的技巧.分享给大家供大家参考. 具体实现方法如下: import itertools thekeys = ['b','a','c'] thevalues = ['bbb','aaa','cccc'] d = dict(itertools.izip(thekeys,thevalues)) #创建字典 print d def sortedDictValue(adict): keys = adict.keys() keys.sort() ret

  • Python Trie树实现字典排序

    一般语言都提供了按字典排序的API,比如跟微信公众平台对接时就需要用到字典排序.按字典排序有很多种算法,最容易想到的就是字符串搜索的方式,但这种方式实现起来很麻烦,性能也不太好.Trie树是一种很常用的树结构,它被广泛用于各个方面,比如字符串检索.中文分词.求字符串最长公共前缀和字典排序等等,而且在输入法中也能看到Trie树的身影. 什么是Trie树 Trie树通常又称为字典树.单词查找树或前缀树,是一种用于快速检索的多叉树结构.如图数字的字典是一个10叉树: 同理小写英文字母或大写英文字母的字

  • 简单总结Python中序列与字典的相同和不同之处

    共同点: 1.它们都是python的核心类型,是python语言自身的一部分 核心类型与非核心类型 多数核心类型可通过特定语法来生成其对象,比如"dave"就是创建字符串类型的对象的表达式: 非核心类型需要内置函数来创建,比如文件类型需要调用内置函数open()来创建. 类也可以理解成自定义的非核心类型. 2.边界检查都不允许超越索引边界 >>> a = 'dave' >>> a[3] 'e' >>> a[4] Traceback

  • Python有序字典简单实现方法示例

    本文实例讲述了Python有序字典简单实现方法.分享给大家供大家参考,具体如下: 代码: # -*- coding: UTF-8 -*- import collections print 'Regular dictionary:' d = {} d['a'] = 'A' d['b'] = 'B' d['c'] = 'C' for k, v in d.items(): print k, v print '\nOrderedDict:' d = collections.OrderedDict() d

  • python 字典(dict)按键和值排序

    python 字典(dict)的特点就是无序的,按照键(key)来提取相应值(value),如果我们需要字典按值排序的话,那可以用下面的方法来进行: 1 下面的是按照value的值从大到小的顺序来排序. dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0} dict= sorted(dic.items(), key=lambda d:d[1], reverse = True) print(dict) 输出的结果: [('aa', 74),

  • python3.0 字典key排序

    IDLE 3.0 >>> dic = {"aa":1,"bb":2,"ab":3} >>> dic {'aa': 1, 'ab': 3, 'bb': 2} >>> for k in sorted(dic.keys()): print (k) aa ab ----------------------------------------------- 字典对象其实就是键-值对 下面是字典对象的添加

  • python模块简介之有序字典(OrderedDict)

    有序字典-OrderedDict简介 示例 有序字典和通常字典类似,只是它可以记录元素插入其中的顺序,而一般字典是会以任意的顺序迭代的.参见下面的例子: import collections print 'Regular dictionary:' d = {} d['a'] = 'A' d['b'] = 'B' d['c'] = 'C' d['d'] = 'D' d['e'] = 'E' for k, v in d.items(): print k, v print '\nOrderedDict

  • Python编程对列表中字典元素进行排序的方法详解

    本文实例讲述了Python编程对列表中字典元素进行排序的方法.分享给大家供大家参考,具体如下: 内容目录: 1. 问题起源 2. 对列表中的字典元素排序 3. 对json进行比较(忽略列表中字典的顺序) 一.问题起源 json对象a,b a = '{"ROAD": [{"id": 123}, {"name": "no1"}]}' b = '{"ROAD": [{"name": "

  • Python实现字典依据value排序

    具体内容如下: 使用sorted将字典按照其value大小排序 >>> record = {'a':89, 'b':86, 'c':99, 'd':100} >>> sorted(record.items(), key=lambda x:x[1]) [('b', 86), ('a', 89), ('c', 99), ('d', 100)] sorted第一个参数要可迭代,可以为tuple, list >>> items = [(1, 'B'), (1,

  • Python常用的内置序列结构(列表、元组、字典)学习笔记

    列表与元组 列表用大括号[]表示,元组用圆括号()表示. 列表可以修改,字符串与元组不可修改. 元组的分片还是元组,列表的分片还是列表. 1.列表方法: name=["zhang3","li4","wang5"] name.append("gou6") #添加项 name.remove("gou6") #移除第一个匹配项,也可用del name[3]来移除 name.insert(3,"gou6&

  • python字典排序实例详解

    本文实例分析了python字典排序的方法.分享给大家供大家参考.具体如下: 1. 准备知识: 在python里,字典dictionary是内置的数据类型,是个无序的存储结构,每一元素是key-value对: 如:dict = {'username':'password','database':'master'},其中'username'和'database'是key,而'password'和'master'是value,可以通过d[key]获得对应值value的引用,但是不能通过value得到k

随机推荐