Python模块Collection——OrderedDict

2023-10-30

OrderedDict 有序字典

OrderedDict是dict的子类,它记住了内容添加的顺序。

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['a'] = 'A'

d['b'] = 'B'

d['c'] = 'C'



for k, v in d.items():

   print k, v

执行结果:

./collections_ordereddict_iter.py

Regular dictionary:

a A

c C

b B

OrderedDict:

a A

b B

c C

OrderedDict要内容和顺序完全相同才会视为相等。

import collections



print 'dict       :',

d1 = {}

d1['a'] = 'A'

d1['b'] = 'B'

d1['c'] = 'C'



d2 = {}

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'



d2 = collections.OrderedDict()

d2['c'] = 'C'

d2['b'] = 'B'

d2['a'] = 'A'



print d1 == d2

执行结果:

./collections_ordereddict_equality.py

dict : True

OrderedDict: False

定义:

class collections.OrderedDict([items])

注意顺序以添加顺序为准,和修改的顺序无关。

特殊方法:OrderedDict.popitem(last=True) 。last为True是LIFO,即为堆栈,反之是FIFO,即为队列。还支持排序: reversed() .

有序字典和有序字典的相等比较,是顺序相关的;和其他映射类型比较,是顺序无关的。

手册中的实例:

//regular unsorteddictionary

d = {‘banana’: 3, ‘apple’:4,’pear’: 1, ‘orange’: 2}

// dictionary sorted by key

OrderedDict(sorted(d.items(),key=lambda t: t[0]))

OrderedDict([(‘apple’, 4), (‘banana’, 3),(‘orange’, 2), (‘pear’, 1)])

//dictionary sorted by value

OrderedDict(sorted(d.items(),key=lambda t: t[1]))

OrderedDict([(‘pear’, 1), (‘orange’, 2),(‘banana’, 3), (‘apple’, 4)])

// dictionary sorted bylength of the key string

OrderedDict(sorted(d.items(),key=lambda t: len(t[0])))

OrderedDict([(‘pear’, 1), (‘apple’, 4),(‘orange’, 2), (‘banana’, 3)])

如果想根据插入顺序排序:

classLastUpdatedOrderedDict(OrderedDict):

‘Store items in the order the keys were last added’

 def __setitem__(self, key, value):

       if key in self:

           del self[key]

       OrderedDict.__setitem__(self, key, value)

上面已经存在的元素再次插入,就会移动到最后。

还可以与Counter结合,是Counter记住第一次元素出现的顺序。

classOrderedCounter(Counter, OrderedDict):

 'Counter that remembers the order elementsare first encountered'
def __repr__(self):

         return '%s(%r)' % (self.__class__.__name__,OrderedDict(self))



     def __reduce__(self):

         return self.__class__, (OrderedDict(self),)

参考资料:

SeeAlso:

collections(http://docs.python.org/library/collections.html) The standard library

documentationfor this module.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python模块Collection——OrderedDict 的相关文章

随机推荐

  • 小程序使用变量的值作为变量使用

    使用同一个日期选择组件 给不同的日期选择框赋值 发现想动态的给不同的组件赋值 这时候需要根据变量中暂存的组件变量赋值 这里做一下记录 calendarSelect event this setData calendarVisable fal
  • Linux常用命令-文件操作 网络命令 性能命令

    1 1文件操作命令 改变目录 cd 查看当前路径 pwd 创建目录 mkdir tmp test 创建文件 touch tmp a txt 删除文件或文件夹 rm tmp a txt 删除文件 rm r tmp test 删除文件夹 复制文
  • table2excel 导出表格有边框,文字居中

    应项目需要 前端直接导出表格中的数据 百度找到了table2excel 很实用 但是导出的表格没有边框 且表格中的数据没有居中 网上没找到对应的办法 就自己对table2excel js做了修改 能够实现导出的表格有边框 文字居中的要求 故
  • python print格式化输出

    在 Python 中 以 f 或 F 前缀开始的字符串表示格式化字符串字面量 通常称为 f string 从 Python 3 6 开始引入 它们是一种在字符串中嵌入表达式的新方法 这些表达式在运行时会被评估 然后使用 将它们插入到字符串中
  • Maven项目出现 ;about:black#block

    这是因为url路径有问题 检查元素 看到action是空的 解决这个问题 就可以解决问题了 这么简单的问题 为啥没有发现 因为配了域名映射的缘故 tomact一直访问的是 该文件下的项目 而我的工程项目是放在webapps下面的 这就导致我
  • NFS服务器的搭建(文件共享)

    NFS NFS目的是让不同计算机不同操作系统之间可以彼此共享文件 采用服务器 客户端工作模式ip 在NFS服务器上将目录设置为输出目录 即共享目录 后 客户端就可以将这个目录挂载到自己系统中的某个目录下 什么是RPC守护进程 使用NFS服务
  • Qt lambda 简化你的代码 connect 写法示例 省略槽函数定义

    简述 lambda 来姆达啊 很标准哈哈 英 l md 美 l md 百度百科 Lambda 表达式 lambda expression 是一个匿名函数 Lambda表达式基于数学中的 演算得名 直接对应于其中的lambda抽象 lambd
  • 关于vue项目刷新当前页面,获取数据改变后的页面

    vue项目刷新当前页面的几种方法 vue因为生命周期的原因 很多时候碰到这种情况 页面点击修改按钮 相应需要改变的数据不改变 只有F5情况下才能刷新数据已经修改后的页面 因为虽然点击了修改数据按钮 但是vue的生命周期已经执行完了 所以页面
  • 人脸检测、对齐、跟踪、识别 论文收集

    转自 https github com ChanChiChoi awesome Face Recognition
  • 目标检测算法FPN(Feature Pyramid Networks)简介

    目标检测算法Feature Pyramid Networks FPN 由Tsung Yi Lin等人于2017年提出 论文名字为 Feature Pyramid Networks for Object Detection 可以从https
  • SLAM笔记(七)回环检测中的词袋BOW

    1 词频 摘自阮一峰博客 参见附录参考 如果某个词很重要 它应该在这篇文章中多次出现 于是 我们进行 词频 Term Frequency 缩写为TF 统计 考虑到文章有长短之分 为了便于不同文章的比较 进行 词频 标准化 一般分母设置为文章
  • Centos7镜像下载教程(2023年,4月)

    一 因为Centos官网是挂在国外的服务器上 下载镜像时相比于国内的下载速度会慢很多 所以在这里向大家分享两个国内的镜像站去下载Centos镜像 二 前往阿里云镜像站下载Centos7镜像 1 阿里云官网地址 https www aliyu
  • 广度/宽度优先搜索(BFS)

    转自 https blog csdn net raphealguo article details 7523411 1 前言 广度优先搜索 也称宽度优先搜索 缩写BFS 以下采用广度来描述 是连通图的一种遍历策略 因为它的思想是从一个顶点V
  • js回调函数(callback)

    回调函数 其实简单理解的话就是在一个函数执行完毕后 得到想要的特定数据后在去执行的函数 我门直接看示例 2 getdata check 运行getdata函数 实参为check函数 1 function getdata callback 这
  • Beautiful Soup 安装教程(学习python爬虫必备库)

    文章目录 Beautiful Soup 库 一 安装 1 通过 pip 安装 2 下载安装包安装 二 验证 三 其它系统安装方式 Linux 和 Mac 1 Linux 系统基本安装方法 2 Mac 系统基本安装方法 相关链接 Beauti
  • openpyxl-(操作Excel)

    文档 https openpyxl readthedocs io en stable index html 注意事项 1 查看正在打开的excel表格就不会报错 但是 如果操作正在打开的excel表格 就会报错 写入异常 因为你正在打开当前
  • 嵌入式开发八:ARM cortex A8/9 - Android NDK - NEON介绍以及优化

    ARM cortex A8 9 Android NDK NEON介绍以及优化 资源的整理总结 1 What is NDK Android开发官网介绍 http developer android com sdk ndk overview h
  • 结构体中的函数指针(c语言里一种思想)

    阅读raft源码的时候看到结构体里面的void xx 看不懂这个地方 看上去又像面向对象的类方法 但是这是c语言的结构体啊 了解了这是函数指针 小趴菜 一 函数指针 函数指针是指向函数的指针变量 通常我们说的指针变量是指向一个整型 字符型或
  • 图片URL转Base64,Base64转二进制文件流

    现在的项目中对于图片的处理很多 对于图片的URL转Base64或者Base64转文件流很是不好处理 下面我总结了这两种方法互转的代码 希望对你有所帮助 图片URL 转Base64 function getBase64Image img va
  • Python模块Collection——OrderedDict

    OrderedDict 有序字典 OrderedDict是dict的子类 它记住了内容添加的顺序 import collections print Regular dictionary d d a A d b B d c C for k v