博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《Python Cookbook(第3版)中文版》——1.7 让字典保持有序
阅读量:6813 次
发布时间:2019-06-26

本文共 894 字,大约阅读时间需要 2 分钟。

本节书摘来自异步社区《Python Cookbook(第3版)中文版》一书中的第1章,第1.7节,作者[美]David Beazley , Brian K.Jones,陈舸 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.7 让字典保持有序

1.7.1 问题

我们想创建一个字典,同时当对字典做迭代或序列化操作时,也能控制其中元素的顺序。

1.7.2 解决方案

要控制字典中元素的顺序,可以使用collections模块中的OrderedDict类。当对字典做迭代时,它会严格按照元素初始添加的顺序进行。例如:

from collections import OrderedDictd = OrderedDict()d['foo'] = 1d['bar'] = 2d['spam'] = 3d['grok'] = 4# Outputs "foo 1", "bar 2", "spam 3", "grok 4"for key in d:print(key, d[key])

当想构建一个映射结构以便稍后对其做序列化或编码成另一种格式时,OrderedDict就显得特别有用。例如,如果想在进行JSON编码时精确控制各字段的顺序,那么只要首先在OrderedDict中构建数据就可以了。

>>> import json>>> json.dumps(d)'{"foo": 1, "bar": 2, "spam": 3, "grok": 4}'>>>

1.7.3 讨论

OrderedDict内部维护了一个双向链表,它会根据元素加入的顺序来排列键的位置。第一个新加入的元素被放置在链表的末尾。接下来对已存在的键做重新赋值不会改变键的顺序。

请注意OrderedDict的大小是普通字典的2倍多,这是由于它额外创建的链表所致。因此,如果打算构建一个涉及大量OrderedDict实例的数据结构(例如从CSV文件中读取100000行内容到OrderedDict列表中),那么需要认真对应用做需求分析,从而判断使用OrderedDict所带来的好处是否能超越因额外的内存开销所带来的缺点。

转载地址:http://mvkzl.baihongyu.com/

你可能感兴趣的文章
无法启动 DTC 分布式事务服务,MS DTC 发生服务特定错误: 3221229584
查看>>
基于HTTP协议的轻量级开源简单队列服务:HTTPSQS
查看>>
【精品教程】Android高手进阶教程pdf分享
查看>>
我的友情链接
查看>>
cocos2dx-3.0rc0安装和创建新工程
查看>>
佛系程序员的月薪五万指南
查看>>
Visual Studio 2017 右键项目 清理(Clean)、生成(Build)和重新生成(Rebuild)
查看>>
区块链100讲:以太坊(Ethereum ETH)挖矿教程
查看>>
比特币前核心开发者Mike Hearn三年前的预测一一应验
查看>>
【2018.04.25学习笔记】【linux基础知识9.1-9.3】
查看>>
springcloud应用程序上下文层次结构
查看>>
为什么python突然变得这么火了?
查看>>
国外“小乔布斯”玩转Python、Java,12岁成立自己的公司!
查看>>
重磅发布!阿里云推PostgreSQL 10 高可用版
查看>>
ComponentOne 2019V1更新亮点之WinForm篇
查看>>
我的友情链接
查看>>
tomcat7配置
查看>>
JAVA 事务处理
查看>>
Python基础6-1 面向对象编程
查看>>
邮箱服务器DNS BLACKLIST过滤SMTP
查看>>