Python中字典的基础知识归纳小结


Posted in Python onAugust 19, 2015

定义一个字典

>>> d = {"server":"mpilgrim", "database":"master"} 1
>>> d
{'server': 'mpilgrim', 'database': 'master'}
>>> d["server"]         2
'mpilgrim'
>>> d["database"]         3
'master'
>>> d["mpilgrim"]         4
Traceback (innermost last):
  File "<interactive input>", line 1, in ?
KeyError: mpilgrim

首先,我们创建了一个拥有两个元素的新字典,并将其赋值给变量 d。每一个元素都是一个键-值对,整个元素集合用大括号括起来。
server 是一个键字,它所关联的值为 mpilgrim,用 d["server"] 来引用。
database 是一个键字,它所关联的值为 master,用 d["database"] 来引用。
 

你可以通过键字来得到值,但是不能通过值得到键字。所以 d["server"] 为 mpilgrim,但是使用 d["mpilgrim"] 会引发一个异常,因为 mpilgrim 不是一个键字。

修改一个字典

>>> d
{'server': 'mpilgrim', 'database': 'master'}
>>> d["database"] = "pubs" 1
>>> d
{'server': 'mpilgrim', 'database': 'pubs'}
>>> d["uid"] = "sa"  2
>>> d
{'server': 'mpilgrim', 'uid': 'sa', 'database': 'pubs'}

不能在一个字典中有重复的键字。给一个存在的键字赋值会抹掉原来的值。

可以在任何时候加入新的键-值对。这种语法同修改存在的值一样。(是的,它可能某天会给你带来麻烦,你可能认为增加了新值,但实际上只是反复地修改了同样的值,因为你的键字没有按照你的想象改变。)

注意新的元素(键字为 uid,值为 sa)出现在字典中间。实际上,它只不过是一种巧合,在第一个例子中的元素看上去是有序的。现在它们看上去无序了则更是一种巧合。

Note

字典没有元素顺序的概念。说元素顺序乱了是不正确的,它们只是简单的无序。这是一个重要的特性,它会在你想要以一种特定的,可重复的顺序(象以键字的字母表顺序)存取字典元素的时候骚扰你。有一些实现的方法,它们只是没有加到字典中去。

在字典中混用数据类型

>>> d
{'server': 'mpilgrim', 'uid': 'sa', 'database': 'pubs'}
>>> d["retrycount"] = 3 1
>>> d
{'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 'retrycount': 3}
>>> d[42] = "douglas" 2
>>> d
{'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 42: 'douglas', 'retrycount': 3}

字典不是只用于字符串。字典的值可以是任意数据类型,包括字符串,整数,对象,或者甚至其它的字典。在一个单个字典里,字典的值并不需要全都是同一数据类型,可以根据需要混用和配匹。
字典的关键字要严格一些,但是它们可以是字符串,整数和几种其它的类型(后面还会谈到这一点)。也可以在一个字典中混用和配匹关键字。

从字典中删除元素

>>> d
{'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 42: 'douglas', 'retrycount': 3}
>>> del d[42] 1
>>> d
{'server': 'mpilgrim', 'uid': 'sa', 'database': 'master', 'retrycount': 3}
>>> d.clear() 2
>>> d
{}

del 允许你根据键字将单个元素从字典中删除。
clear 会删除一个字典中所有元素。注意空的大括号所表示的集合说明一个字典没有元素。

字符串是大小写敏感

>>> d = {}
>>> d["key"] = "value"
>>> d["key"] = "other value" 1
>>> d
{'key': 'other value'}
>>> d["Key"] = "third value" 2
>>> d
{'Key': 'third value', 'key': 'other value'}

将一个值赋给一个存在的字典关键字只是简单的用新值替换旧值。

这样做不会将一个值赋给一个存在的字典关键字,因为在Python中字符串是大小写敏感的,所以 'key' 与 'Key' 是不同的。这样就在字典中生成了一个新的键/值对。对你来说可能差不多,但对于Python来说,完全是不同的。

如何访问字典中的值:

>>> dict2 = {'name':'earth','port':80}  

>>> for key in dict2.keys():     

... print 'key=%s,value=%s' %(key,dict2[key])

...

key=name,value=earth

key=port,value=80


>>> for key in dict2:       

... print 'key=%s,value=%s' %(key,dict2[key])

...

key=name,value=earth

key=port,value=80

获取字典某个元素值:

>>> dict2['name']

'earth'

>>> print 'host %s is running on port %d' %(dict2['name'],dict2['port'])

host earth is running on port 80

检查字典中是否有某个键的方法 has_key()或in,not in

>>> 'name' in dict2

True

>>> 'server' in dict2

False

>>> 'name' in dict2 

True

>>> dict2['name']

'earth'

>>> dict2.has_key('server')

False

>>> dict2.has_key('name') 

True

一个字典中混用数字和字符串的例子:

>>> dict3 = {}

>>> dict3[1] = 'abc'

>>> dict3['1'] = 3.14159

>>> dict3[3.2] = 'xyz'

>>> dict3

{'1': 3.14159, 1: 'abc', 3.2: 'xyz'}

整体赋值:

>>> dict3 = {'1': 3.14159, 1: 'abc', 3.2: 'xyz',33:'hehe'}

>>> dict3

{'1': 3.14159, 1: 'abc', 3.2: 'xyz', 33: 'hehe'}

更新字典:

>>> dict2['name'] = 'venus'

>>> dict2['port'] = 6969

>>> dict2['arch'] = 'sunos5'

>>> print 'host %(name)s is running on port %(port)d' %dict2

host venus is running on port 6969

删除字典元素和字典

>>> dict2

{'arch': 'sunos5', 'name': 'venus', 'port': 6969}

>>> del dict2['name']

>>> dict2

{'arch': 'sunos5', 'port': 6969}

>>> dict2.clear()

>>> dict2

{}

>>> del dict2

>>> dict2

Traceback (most recent call last):

 File "<stdin>", line 1, in <module>

NameError: name 'dict2' is not defined

>>> dict3

{'1': 3.14159, 1: 'abc', 3.2: 'xyz', 33: 'hehe'}

>>> dict3.pop(33) 

'hehe'

>>> dict3

{'1': 3.14159, 1: 'abc', 3.2: 'xyz'}

注:避免使用内建对象名字作为变量的标识符

类似: dict,list,file,bool,str,input,len

Python 相关文章推荐
有关wxpython pyqt内存占用问题分析
Jun 09 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
Sep 12 Python
Python定时器实例代码
Nov 01 Python
Python实现自定义顺序、排列写入数据到Excel的方法
Apr 23 Python
详解python中递归函数
Apr 16 Python
python开头的coding设置方法
Aug 08 Python
Python读取表格类型文件代码实例
Feb 17 Python
浅谈keras2 predict和fit_generator的坑
Jun 17 Python
Python判断变量是否是None写法代码实例
Oct 09 Python
Python用户自定义异常的实现
Dec 25 Python
python基于opencv批量生成验证码的示例
Apr 28 Python
如何利用pygame实现打飞机小游戏
May 30 Python
Python在Windows和在Linux下调用动态链接库的教程
Aug 18 #Python
Python中map,reduce,filter和sorted函数的使用方法
Aug 17 #Python
Nginx搭建HTTPS服务器和强制使用HTTPS访问的方法
Aug 16 #Python
使用Python操作MySQL的一些基本方法
Aug 16 #Python
Python中list列表的一些进阶使用方法介绍
Aug 15 #Python
Python中的super()方法使用简介
Aug 14 #Python
在Python中使用正则表达式的方法
Aug 13 #Python
You might like
Thinkphp5行为使用方法汇总
2017/12/21 PHP
PHP信号处理机制的操作代码讲解
2019/04/19 PHP
JavaScript面向对象知识串结(读JavaScript高级程序设计(第三版))
2012/07/17 Javascript
获取3个数组不重复的值的具体实现
2013/12/30 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
Javascript数据结构与算法之列表详解
2015/03/12 Javascript
基于jQuery实现选取月份插件附源码下载
2015/12/28 Javascript
基于BootStrap Metronic开发框架经验小结【三】下拉列表Select2插件的使用
2016/05/12 Javascript
jquery+CSS3实现3D拖拽相册效果
2016/07/18 Javascript
node.js与C语言 实现遍历文件夹下最大的文件,并输出路径,大小
2017/01/20 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
2017/08/14 Javascript
webpack打包react项目的实现方法
2018/06/21 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
2018/10/08 Javascript
使用nodejs分离html文件里的js和css详解
2019/04/12 NodeJs
js new Date()实例测试
2019/10/31 Javascript
vue-cli3.0实现一个多页面应用的历奇经历记录总结
2020/03/16 Javascript
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
Python牛刀小试密码爆破
2011/02/03 Python
python获取当前日期和时间的方法
2015/04/30 Python
Python编程实现的图片识别功能示例
2017/08/03 Python
Python跨文件全局变量的实现方法示例
2017/12/10 Python
PyQt5实现简单数据标注工具
2019/03/18 Python
python-xpath获取html文档的部分内容
2020/03/06 Python
Django 解决阿里云部署同步数据库报错的问题
2020/05/14 Python
eBay美国官网:eBay.com
2020/10/24 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
试解释COMMIT操作和ROLLBACK操作的语义
2014/07/25 面试题
开学典礼演讲稿
2014/05/23 职场文书
校园标语大全
2014/06/19 职场文书
2014年政教处工作总结
2014/12/20 职场文书
幼儿学前班评语
2014/12/29 职场文书
综合办公室岗位职责
2015/04/11 职场文书
2019年员工晋升管理制度范本!
2019/07/08 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书