当前位置: 首页 > 编程笔记 >

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

钱嘉致
2023-03-14
本文向大家介绍python模块简介之有序字典(OrderedDict),包括了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:'
d = collections.OrderedDict()
d['a'] = 'A'
d['b'] = 'B'
d['c'] = 'C'
d['d'] = 'D'
d['e'] = 'E'

for k, v in d.items():
  print k, v

运行结果如下:

-> python test7.py
Regular dictionary:
a A
c C
b B
e E
d D

OrderedDict:
a A
b B
c C
d D
e E

可以看到通常字典不是以插入顺序遍历的。

相等性

判断两个有序字段是否相等(==)需要考虑元素插入的顺序是否相等

import collections

print 'dict    :',
d1 = {}
d1['a'] = 'A'
d1['b'] = 'B'
d1['c'] = 'C'
d1['d'] = 'D'
d1['e'] = 'E'

d2 = {}
d2['e'] = 'E'
d2['d'] = 'D'
d2['c'] = 'C'
d2['b'] = 'B'
d2['a'] = 'A'

print d1 == d2

print 'OrderedDict:',

d1 = collections.OrderedDict()
d1['a'] = 'A'
d1['b'] = 'B'
d1['c'] = 'C'
d1['d'] = 'D'
d1['e'] = 'E'

d2 = collections.OrderedDict()
d2['e'] = 'E'
d2['d'] = 'D'
d2['c'] = 'C'
d2['b'] = 'B'
d2['a'] = 'A'

print d1 == d2

运行结果如下:

-> python test7.py
dict    : True
OrderedDict: False

而当判断一个有序字典和其它普通字典是否相等只需判断内容是否相等。

注意

OrderedDict 的构造器或者 update() 方法虽然接受关键字参数,但因为python的函数调用会使用无序的字典来传递参数,所以关键字参数的顺序会丢失,所以创造出来的有序字典不能保证其顺序。

参考资料

https://docs.python.org/2/library/collections.html#collections.OrderedDict
https://pymotw.com/2/collections/ordereddict.html

 类似资料:
  • 在开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。 后面我们学习了函数,知道函数是实现一项或多项功能的一段程序,这样就更方便我们重复使用代码。 紧接着,我们有学了类,类可以封装方法和变量(属性)。这样就更方便我们维护代码了。 我们之前学过,类的结构是这样的: 而我们要学的模块是这样的: 在模块中,我们不但可以直接存放变量,还能存放函数,还能存放类。 不知道你们还有

  • 本文向大家介绍Python的collections模块中的OrderedDict有序字典,包括了Python的collections模块中的OrderedDict有序字典的使用技巧和注意事项,需要的朋友参考一下 如同这个数据结构的名称所说的那样,它记录了每个键值对添加的顺序。 输出:    如果初始化的时候同时传入多个参数,它们的顺序是随机的,不会按照位置顺序存储。 除了和正常的 dict 相同的

  • 目录表 简介 使用sys模块 字节编译的.pyc文件 from..import语句 模块的__name__ 使用模块的__name__ 制造你自己的模块 创建你自己的模块 from..import dir()函数 使用dir函数 概括 简介 你已经学习了如何在你的程序中定义一次函数而重用代码。如果你想要在其他程序中重用很多函数,那么你该如何编写程序呢?你可能已经猜到了,答案是使用模块。模块基本上就

  • 如何使用web3j为Java应用或Android App增加以太坊区块链支持,本教程内容即涉及以太坊中的核心概念,例如账户管理包括账户的创建、钱包创建、交易转账,交易与状态、智能合约开发与交互、过滤器和事件等,同时也详细说明如何使用web3j提供的API开发接口与以太坊进行交互,是java和android(安卓)工程师学习以太坊应用开发(DApp)的不二选择。 以太坊概述 以太坊是备受关注的区块链

  • 随着我们的应用越来越大,我们想要将其拆分成多个文件,即所谓的“模块(module)”。一个模块可以包含用于特定目的的类或函数库。 很长一段时间,JavaScript 都没有语言级(language-level)的模块语法。这不是一个问题,因为最初的脚本又小又简单,所以没必要将其模块化。 但是最终脚本变得越来越复杂,因此社区发明了许多种方法来将代码组织到模块中,使用特殊的库按需加载模块。 列举一些(

  • 本文向大家介绍Python字典简介以及用法详解,包括了Python字典简介以及用法详解的使用技巧和注意事项,需要的朋友参考一下 老规矩以下方法环境2.7.x,请3.x以上版本的朋友记得格式print(输出内容放入括号内) 字典的基本组成以及用法 首先来说说字典是由key键与value值一一对应来组成字典的基本结构 key键不能由list列表,dict字典等多元素命名, key是唯一属性又可以称一对