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进阶教程之词典、字典、dict
Aug 29 Python
Python贪吃蛇游戏编写代码
Oct 26 Python
Python判断变量是否为Json格式的字符串示例
May 03 Python
pandas series序列转化为星期几的实例
Apr 11 Python
python2与python3的print及字符串格式化小结
Nov 30 Python
Python设计模式之简单工厂模式实例详解
Jan 22 Python
Python之修改图片像素值的方法
Jul 03 Python
关于ZeroMQ 三种模式python3实现方式
Dec 23 Python
python opencv根据颜色进行目标检测的方法示例
Jan 15 Python
OpenCV 表盘指针自动读数的示例代码
Apr 10 Python
Django多数据库联用实现方法解析
Nov 12 Python
Python实例教程之检索输出月份日历表
Dec 16 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
第三节 定义一个类 [3]
2006/10/09 PHP
php抽象类使用要点与注意事项分析
2015/02/09 PHP
微信API接口大全
2015/04/15 PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
2017/08/04 PHP
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
JavaScript 字符串处理函数使用小结
2010/12/02 Javascript
jQuery右键菜单contextMenu使用实例
2011/09/28 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
2013/09/02 Javascript
jQuery 获取浏览器所在的IP地址的小例子
2013/11/08 Javascript
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
浅谈javascript的Touch事件
2015/09/27 Javascript
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
总结Node.js中的一些错误类型
2016/08/15 Javascript
angularjs 中$apply,$digest,$watch详解
2016/10/13 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
JavaScript中数组Array方法详解
2017/02/27 Javascript
原生js更改css样式的两种方式
2017/03/15 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
Angular 2.0+ 的数据绑定的实现示例
2017/08/09 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
JS实现canvas简单小画板功能
2020/06/23 Javascript
vue2和vue3的v-if与v-for优先级对比学习
2020/10/10 Javascript
[25:45]2018DOTA2亚洲邀请赛4.5SOLO赛 Sylar vs Paparazi
2018/04/06 DOTA
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
使用python Telnet远程登录执行程序的方法
2019/01/26 Python
解决python线程卡死的问题
2019/02/18 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
2020/06/04 Python
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
Gap中国官网:美式休闲风服饰
2017/02/05 全球购物
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
秘书行业自我鉴定范文
2013/12/30 职场文书
仓库管理制度
2014/01/21 职场文书
《作风建设永远在路上》心得体会
2016/01/21 职场文书
再读《皇帝的新衣》的读后感悟!
2019/08/07 职场文书