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 相关文章推荐
python连接mongodb操作数据示例(mongodb数据库配置类)
Dec 31 Python
使用C语言来扩展Python程序和Zope服务器的教程
Apr 14 Python
Python sys.argv用法实例
May 28 Python
python实现随机梯度下降(SGD)
Mar 24 Python
利用python解决mysql视图导入导出依赖的问题
Dec 17 Python
Python调用Windows API函数编写录音机和音乐播放器功能
Jan 05 Python
pytorch 彩色图像转灰度图像实例
Jan 13 Python
基于python实现语音录入识别代码实例
Jan 17 Python
python实现梯度下降法
Mar 24 Python
Python如何把十进制数转换成ip地址
May 25 Python
python3实现将json对象存入Redis以及数据的导入导出
Jul 16 Python
pandas参数设置的实用小技巧
Aug 23 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
php图片加中文水印实现代码分享
2012/10/31 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
PHP中余数、取余的妙用
2015/06/29 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
使用js在页面中绘制表格核心代码
2013/09/16 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
三种动态加载js的jquery实例代码另附去除js方法
2014/04/30 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
2017/05/20 Javascript
JQuery.dataTables表格插件添加跳转到指定页
2017/06/09 jQuery
AngularJs返回前一页面时刷新一次前面页面的方法
2018/10/09 Javascript
vue-cli项目中使用echarts图表实例
2018/10/22 Javascript
JavaScript禁用右键单击优缺点分析
2019/01/20 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
python网页请求urllib2模块简单封装代码
2014/02/07 Python
Python随机生成彩票号码的方法
2015/03/05 Python
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
Python实现简单网页图片抓取完整代码实例
2017/12/15 Python
python dataframe astype 字段类型转换方法
2018/04/11 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
2018/05/21 Python
wxPython实现画图板
2020/08/27 Python
python实现简单井字棋小游戏
2020/03/05 Python
python更新数据库中某个字段的数据(方法详解)
2020/11/18 Python
HTML5中的拖放实现详解
2017/08/23 HTML / CSS
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
斯洛伐克电子产品购物网站:DATART
2020/04/05 全球购物
专业实习自我鉴定
2013/10/29 职场文书
计算机专业职业生涯规划范文
2014/01/19 职场文书
大学班级计划书
2014/04/29 职场文书
2015初中团支部工作总结
2015/07/21 职场文书
win11开机发生死循环重启怎么办?win11开机发生死循环重启解决方法
2022/08/05 数码科技