Python OrderedDict is a dict subclass that maintains the items insertion order. When we iterate over an OrderedDict, items are returned in the order they were inserted.

Python OrderedDict是一个dict子类,用于维护项目的插入顺序。 当我们遍历OrderedDict时,将按照插入顺序返回项目。

A regular dictionary doesn’t track the insertion order. So when iterating over it, items are returned in an arbitrary order. When we want to make sure that items are returned in the order they were inserted, we can use OrderedDict.

常规词典不会跟踪插入顺序。 因此,在对其进行迭代时,将以任意顺序返回项目。 当我们要确保按插入顺序返回项目时,可以使用OrderedDict。

Python OrderedDict (Python OrderedDict)

  • OrderedDict is part of python collections module.OrderedDict是python集合模块的一部分。
  • We can create an empty OrderedDict and add items to it. If we create an OrderedDict by passing a dict argument, then the ordering may be lost because dict doesn’t maintain the insertion order.我们可以创建一个空的OrderedDict并向其中添加项目。 如果我们通过传递dict参数来创建OrderedDict,则该顺序可能会丢失,因为dict无法维持插入顺序。
  • If an item is overwritten in the OrderedDict, it’s position is maintained.如果某个项目在OrderedDict中被覆盖,则其位置将保持不变。
  • If an item is deleted and added again, then it moves to the last.如果一个项目被删除并再次添加,则它将移至最后一个。
  • OrderedDict popitem removes the items in FIFO order. It accepts a boolean argument last, if it’s set to True then items are returned in LIFO order.OrderedDict popitemFIFO顺序删除项目。 它last接受一个布尔参数,如果将其设置为True则将按LIFO顺序返回项目。
  • We can move an item to the beginning or end of the OrderedDict using move_to_end function. It accepts a boolean argument last, if it’s set to False then item is moved to the start of the ordered dict.我们可以使用move_to_end函数将项目移动到OrderedDict的开头或结尾。 它last接受一个布尔参数,如果将其设置为False则将项目移到有序dict的开头。
  • From python 3.6 onwards, order is retained for keyword arguments passed to the OrderedDict constructor, refer PEP-468.从python 3.6开始,保留传递给OrderedDict构造函数的关键字参数的顺序,请参阅PEP-468 。
  • We can use reversed() function with OrderedDict to iterate elements in the reverse order.我们可以使用带有OrderedDict的reversed()函数以相反的顺序迭代元素。
  • Equality tests between OrderedDict objects are order-sensitive and are implemented as list(od1.items())==list(od2.items()).OrderedDict对象之间的相等性测试对顺序敏感,并实现为list(od1.items())==list(od2.items())
  • Equality tests between OrderedDict and other Mapping objects are order-insensitive like regular dictionaries. This allows OrderedDict objects to be substituted anywhere a regular dictionary is used.与常规字典一样,OrderedDict与其他Mapping对象之间的相等性测试对顺序不敏感。 这允许在使用常规词典的任何地方替换OrderedDict对象。

Python OrderedDict示例 (Python OrderedDict Examples)

Let’s look at some code examples of Python OrderedDict.

让我们看一下Python OrderedDict的一些代码示例。

创建OrderedDict对象 (Creating OrderedDict object)

from collections import OrderedDict# creating a simple dict
my_dict = {'kiwi': 4, 'apple': 5, 'cat': 3}# creating empty ordered dict
ordered_dict = OrderedDict()
print(ordered_dict)# creating ordered dict from dict
ordered_dict = OrderedDict(my_dict)
print(ordered_dict)

Output:

输出:

OrderedDict()
OrderedDict([('kiwi', 4), ('apple', 5), ('cat', 3)])

从OrderedDict添加,替换,删除项目 (Adding, Replacing, Removing items from OrderedDict)

# adding elements to dict
ordered_dict['dog'] = 3# replacing a dict key value
ordered_dict['kiwi'] = 10
print(ordered_dict)# removing and adding a value
ordered_dict.pop('kiwi')
print(ordered_dict)
ordered_dict['kiwi'] = 4
print(ordered_dict)

Output:

输出:

OrderedDict([('kiwi', 10), ('apple', 5), ('cat', 3), ('dog', 3)])
OrderedDict([('apple', 5), ('cat', 3), ('dog', 3)])
OrderedDict([('apple', 5), ('cat', 3), ('dog', 3), ('kiwi', 4)])

OrderedDict move_to_end示例 (OrderedDict move_to_end example)

# moving apple to end and dog to start
ordered_dict.move_to_end('apple')
ordered_dict.move_to_end('dog', False)
print(ordered_dict)

Output:

输出:

OrderedDict([('dog', 3), ('cat', 3), ('kiwi', 4), ('apple', 5)])

OrderedDict popitem示例 (OrderedDict popitem example)

# pop last item
item = ordered_dict.popitem(True)
print(item)
print(ordered_dict)

Output:

输出:

('apple', 5)
OrderedDict([('dog', 3), ('cat', 3), ('kiwi', 4)])

OrderedDict反向迭代 (OrderedDict Reverse Iteration)

# reversed iteration
for item in reversed(ordered_dict):print(item)

Output:

输出:

kiwi
cat
dog

OrderedDict相等性测试示例 (OrderedDict Equality Tests Example)

# equality tests
d1 = {'a': 'A', 'b': 'B'}
d2 = {'b': 'B', 'a': 'A'}od1 = OrderedDict({'a': 'A', 'b': 'B'})
od2 = OrderedDict({'b': 'B', 'a': 'A'})print(d1 == d2)
print(od1 == od2)
print(d1 == od1)

Output:

输出:

True
False
True
GitHub Repository.GitHub Repository下载完整的示例代码。

Reference: Python Docs

参考: Python文档

翻译自: https://www.journaldev.com/21807/python-ordereddict

Python OrderedDict相关推荐

  1. python 有序字典_(Python基础教程之十七)Python OrderedDict –有序字典

    一个OrderedDict 维护插入顺序添加到字典中的项目.项目的顺序在迭代或序列化时也会保留. 1. Python OrderedDict示例 OrderedDict 是python collect ...

  2. python OrderedDict 详解

    对key进行排序: import collectionsprint("\nOrder dictionary") d1 = collections.OrderedDict() d1[ ...

  3. python把dict转为dataframe,将python OrderedDict转换为datafram

    我的记录OrderedDict,如下所示: my_record = OrderedDict([ (u'FIR_ID', '111249'), (u'FIR_TYPE', 'ORG')]) 我需要把它加 ...

  4. Python基础教程和入门教程

    最近很多小伙伴都来问我,怎么学习python,应该从哪里开始学习呀,要学什么呀,没有辅助资料我也学不会呀,这次它来了,文章比较长耐心看完,看到最后聪明的人就能看懂我的神秘代码哟!! 一:学习目录 第1 ...

  5. Python基础教程,Python入门教程

    Python 是一门上手简单.功能强大.通用型的脚本编程语言.Python 类库极其丰富,这使得 Python 几乎无所不能,网站开发.软件开发.大数据分析.网络爬虫.机器学习等都不在话下. 这套 P ...

  6. 全网最全的Python入门基础教程,超详细。(最新版)

    Python 是一门开源免费.通用型的脚本编程语言,它上手简单,功能强大,坚持「极简主义」.Python 类库(模块)极其丰富,这使得 Python 几乎无所不能,不管是传统的 Web 开发.PC 软 ...

  7. HowToDoInJava 其它教程 2 · 翻译完毕

    原文:HowToDoInJava 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远. ApacheCN 学习资源 目录 JMS 教程 JMS 教 ...

  8. Pandas 秘籍:6~11

    原文:Pandas Cookbook 协议:CC BY-NC-SA 4.0 译者:飞龙 六.索引对齐 在本章中,我们将介绍以下主题: 检查索引对象 生成笛卡尔积 索引爆炸 用不相等的索引填充值 追加来 ...

  9. python编写赛车游戏单机版_使用Python中OrderedDict模拟一个简单的竞速游戏排名

    上一篇,我们梳理了Python中关于字典排序的一些常用方法(杂乱无章的数据结构如何进行排序,简明讲述Python字典排序那些事).其中,我们讲到了Python的collections模块中的Order ...

最新文章

  1. Gil Zilberfeld问答:敏捷产品的规划与管理
  2. JAVA Socket 底层是怎样基于TCP/IP 实现的???
  3. javaweb通过接口来实现多个文件压缩和下载(包括单文件下载,多文件批量下载)
  4. ajax请求 304解决方案:
  5. 老板亲戚来公司实习,差点把公司的Tomcat搞崩了,就因为不会部署Java服务
  6. opencv和caffe编译后怎么添加路径
  7. C语言练习实例15——条件运算符的嵌套
  8. cad插入块_【CAD教程】创建块和块应用步骤
  9. 计算机桌面黑屏有鼠标,电脑黑屏只有鼠标怎么办
  10. 20221024 matlab快速画图中图
  11. 如何选购计算机的硬盘,教你如何选配电脑—硬盘篇
  12. python+opencv+图像特效(图像灰度处理、颜色翻转、图片融合,边缘检测,浮雕效果,颜色映射)
  13. 微信公众号开发 - 开发环境搭建
  14. Xshell、Xftp软件评估过期解决方案
  15. 蓝桥杯试题 基础练习 数列排序
  16. 栈(简单介绍及其应用)
  17. 什么是同比、环比与定基比
  18. 中国社交电商行业发展分析
  19. yolov1官方论文全文翻译[附个人理解]
  20. SUMO(test):简单建立十字交叉路口网络(1)

热门文章

  1. 密码输入页面的实现-模仿支付宝
  2. 一个优秀的Android应用从建项目开始
  3. selenium webdriver 学习总结-元素定位
  4. Asp.net MVC - 使用PRG模式(附源码)
  5. 实用机器人设计(二)-传感器
  6. [USACO5.1] Musical Themes
  7. iOS 中delegate的理解与使用(传值)
  8. JPA+Hibernate 3.3 ——第一个JPA程序
  9. 再学 GDI+[77]: 区域(6) - GetRegionScans - 获取区域中的所有矩形
  10. LeetCode-21.合并两个有序链表(链表+递归)