返回顶部
首页 > 资讯 > 后端开发 > Python >python 中的collections.OrderedDict() 用法
  • 172
分享到

python 中的collections.OrderedDict() 用法

pythoncollectionsOrderedDict() 2022-06-02 22:06:40 172人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

python中的字典对象可以以“键:值”的方式存取数据。OrderedDict是它的一个子类,实现了对字典对象中元素的排序。 注意,OrderedDict的 Key 会按照插入的顺序排列,不是Key本身排序: 比如下

python中的字典对象可以以“键:值”的方式存取数据。OrderedDict是它的一个子类,实现了对字典对象中元素的排序

注意,OrderedDict的 Key 会按照插入的顺序排列,不是Key本身排序:

比如下面比较了两种方式的不同:


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

输出结果如下:

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

可以看到,同样是保存了ABC三个元素,但是使用OrderedDict会根据放入元素的先后顺序进行排序。

由于进行了排序,所以OrderedDict对象的字典对象,如果其顺序不同那么Python也会把他们当做是两个不同的对象,比如下面的代码:


import collections 
print 'Regular dictionary:'
d1={}
d1['a']='A'
d1['b']='B'
d1['c']='C'
 
d2={}
d2['c']='C'
d2['a']='A'
d2['b']='B'
 
print d1==d2 
print '\nOrderedDict:'
d1=collections.OrderedDict()
d1['a']='A'
d1['b']='B'
d1['c']='C'
 
d2=collections.OrderedDict()
d2['c']='C'
d2['a']='A'
d2['b']='B'
 
print  d1==d2

其输出结果为:

Regular dictionary:
True
 
OrderedDict:
False

补充:Python collections.OrderedDict解决dict元素顺序问题

编程中遇到个问题,python JSON.loads时元素顺序可能会发生变化。

这个对于一些需要使用元素顺序来做一些策略的代码来说是致命的。

在网上查了查,结合自己的知识总结一下。

使用dict时,Key是无序的。在对dict做迭代时,我们无法确定Key的顺序。

如果要保持Key的顺序,可以用OrderedDict。

OrderedDict的Key会按照插入的顺序排列,不是Key本身排序。


#coding=utf-8
import json
import collections
my_dict = {}
my_list = ["测试", "1324", "r4ge5"]

for i in my_list:
   my_dict[i] = my_list[my_list.index(i)]
print "str1原串:"
str1 = json.dumps(my_dict, ensure_ascii=False)
print str1
print "对str1字符串进行loads后的结果:"
data_js = json.loads(str1)
print json.dumps(data_js, ensure_ascii=False).encode("utf8")

print "对str1字符串进行loads后的结果(使用OrderedDict):"
data_js = json.loads(str1, object_pairs_hook=collections.OrderedDict)
print json.dumps(data_js, ensure_ascii=False).encode("utf8")

执行结果:

str1原串:
{"测试": "测试", "r4ge5": "r4ge5", "1324": "1324"}
对str1字符串进行loads后的结果:
{"r4ge5": "r4ge5", "1324": "1324", "测试": "测试"}
对str1字符串进行loads后的结果(使用OrderedDict):
{"测试": "测试", "r4ge5": "r4ge5", "1324": "1324"}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: python 中的collections.OrderedDict() 用法

本文链接: https://lsjlt.com/news/10774.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python 中的collections.OrderedDict() 用法
    Python中的字典对象可以以“键:值”的方式存取数据。OrderedDict是它的一个子类,实现了对字典对象中元素的排序。 注意,OrderedDict的 Key 会按照插入的顺序排列,不是Key本身排序: 比如下...
    99+
    2022-06-02
    python collections OrderedDict()
  • 如何在python 中使用collections.OrderedDict() 方法
    本篇文章为大家展示了如何在python 中使用collections.OrderedDict() 方法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python中的字典对象可以以“键:值”的方式存取...
    99+
    2023-06-15
  • python中lambda()的用法
    在C++11和C#中都有匿名函数的存在。下面看看在python中匿名函数的使用。 1.lambda只是一个表达式,函数体比def简单很多。 2.lambda的主体是一个表达式,而不是一个代码块。仅仅能在la...
    99+
    2022-06-04
    python lambda
  • Python中return的用法
    本篇内容介绍了“Python中return的用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!python中return的用法1、retur...
    99+
    2023-06-20
  • Python中shape的用法
    shape函数的功能是读取矩阵的长度,比如shape[0]就是读取矩阵第一维度的长度,相当于行数。它的输入参数可以是一个整数表示维度,也可以是一个矩阵。shape函数返回的是一个元组,表示数组(矩阵)的维度,例子如下: 1. 数组(矩阵)...
    99+
    2023-10-22
    python numpy Powered by 金山文档
  • python中list.sort() 的用法
    sort的基本用法 sort() 是 Python 列表对象的一个方法,它可以按升序(默认)或降序对列表中的元素进行排序。 以下是 sort() 方法的使用方法: # 创建一个列表my_list= [3, 1, 4, 1, 5, 9,...
    99+
    2023-10-24
    python Powered by 金山文档
  • python中exit()的用法
    最近在学习的时候用到exit(),发现对它的用法还不熟悉,通过查阅网上的资料,对exit()的用法做一个简单的整理。 sys.exit(n) 退出程序引发SystemExit异常,可以捕获异常执行些清理工作。n默认值为0,表示正...
    99+
    2023-01-31
    python exit
  • Python中的sys.argv[]用法
    #!/usr/bin/python # -*- coding:utf-8 -*- import sys def readFile(filename):     f = file(filename)  ...
    99+
    2023-01-31
    Python sys argv
  • python中slice()的用法
    slice()是python中的切片函数,负责截取一段数据下来 ...
    99+
    2023-01-31
    python slice
  • python中lambda的用法
    一、lambda函数也叫匿名函数,即,函数没有具体的名称。先来看一个最简单例子: def f(x): return x**2 print f(4) Python中使用lambda的话,写成这样 g = lambda x : x**...
    99+
    2023-01-31
    python lambda
  • python中not的用法
    在python中not是逻辑判断词,用于布尔型True和False,not True为False,not False为True,以下是几个常用的not的用法: (1) not与逻辑判断句if连用,代表not后面的表达式为False的时...
    99+
    2023-01-31
    python
  • Python中set的用法
    python 的集合类型和 其他语言类似, 是一个无序不重复元素集,我在之前学过的其他的语言好像没有见过这个类型,基本功能包括关系测试和消除重复元素.集合对象还支持union(联合), intersection(交), ...
    99+
    2023-01-31
    Python set
  • python中format的用法
    小编给大家分享一下python中format的用法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python中format的使用方法:【format():】把传统...
    99+
    2023-06-08
  • Python中sub()的用法
    Python中sub()是re模块中的一个函数,用于执行正则表达式的替换操作,可以在字符串中搜索匹配某个正则表达式模式的部分,并将其替换为指定的内容,其基本语法为“re.sub(pattern, repl, string, cou...
    99+
    2024-01-26
    python sub()
  • python中的%S用法
    Python中的%S用法详解及代码示例 在Python中,%S是一种字符串格式化的方法,用于将指定的数据值插入到字符串中。下面将详细介绍%S的用法,并给出具体的代码示例。 %S的基本用...
    99+
    2024-02-22
    字符串操作 格式化字符串 字符串插值
  • python中list的用法
    python 中 list 是可变有序元素集合,可用作存储、访问、添加、删除和修改元素的容器。 Python 中 list 的用法 Python 中的 list 是一个有序、可变的数据...
    99+
    2024-05-15
    python 可迭代对象
  • python中global的用法
    global 是 python 中声明在全局作用域中可用的变量的关键字。它用于解决在函数内修改全局变量时,局部变量无法影响全局变量的问题。要在函数内部声明全局变量,请使用 global ...
    99+
    2024-05-15
    python 作用域
  • python中def的用法
    def 关键词用于定义 python 函数,是一段可执行特定任务并返回结果的代码块。它使用以下语法:def 函数名(参数列表):,其中函数名指函数的名称,参数列表指函数接收的输入,函数体...
    99+
    2024-05-15
    python
  • python中index的用法
    index() 方法用于在列表中搜索指定元素的第一个匹配项,并返回其索引位置。用法如下:list.index(value, start=0, end=none)参数value:要搜索的目...
    99+
    2024-05-15
    python
  • python中sort的用法
    python 中的 sort 方法用于对可变序列中的元素按照升序进行排序。该方法直接修改原始序列,不会返回任何值。它接受可选的参数 key(用于比较元素的键)和 reverse(用于指定...
    99+
    2024-05-15
    python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作