Python学习笔记(四) 字典: 当索引不好用时
来源:互联网 发布:2017淘宝美国章鱼哥 编辑:程序博客网 时间:2024/05/01 23:53
字典是一种通过名字引用知的数据结构,这种结构类型成为映射(mapping) , 字典是Python中唯一的内建映射类型. 字典中得知并没有特殊的顺序,但是都存储在一个特定的键(key)里, 建可以是数字,字符串甚至是元组.
4.1 字典的使用
类似于C++ 中的map.
4.2 创建和使用字典
字典可以通过下面的方式创建
:
>>> phonebook = {'Alice':'2341','Beth':'9102','Cecil':'3258'}
4,2,1 dict 函数
可以同dict函数,通过其他映射(比如其他字典) 或者(键,值)这样的序列对建立字典
>>> items=[('name','gumby'),('age',42)]>>> d = dict (items)>>> d{'age': 42, 'name': 'gumby'}
dict函数也可以通过关键字参数来创建字典
>>> d = dict(name = 'gumby',age=42)>>> d{'age': 42, 'name': 'gumby'}
4.2.2 字典的基本操作
字典的基本操作在很多方面与序列(sequence)类似:
len(d) 返回d中项(键-值对)的数量
d[k] 返回关联到键k上的值
d[k]=v 将值v关联到键k上
del[k] 删除键为k的项
k in d 检查的中是否含有键为k的项 .
尽管字典和列表页有很多特性相同,但也有下面以下重要区别
键类型: 不一定整数, 浮点型,字符串,元组都有可能
自动添加: 即使那个键起初在字典中并不存在,也可以为它分配一个值,这样字典就会建立一个新的项 (所以说 Python 中的字典基本就是C++ 中的map)
成员资格 : key in d 查找的是键,而不是值.
字典示例 : 用字典嵌套字典建立简单数据库:
>>> family= {'Liang' :{'phone' : '150','add': 'fushun'},'Xu':{'phone' : ' 139','add' : 'huludao'}}查询: family['Liang']['add']
4.2.3 字典的格式化字符串
>>> phonebook{'Beth': '9102', 'Alice': '2341', 'Cecil': '3258'}>>> "Cecil's phone number is %(Cecil)s."%phonebook"Cecil's phone number is 3258."
4.2.4字典方法
1 clear()
清空字典中的所有元素
2 copy
返回具有相同键-值对的新字典
>>> phonebook{'Beth': '9102', 'Alice': '2341', 'Cecil': '3258'}>>> y=phonebook.copy()>>> y{'Beth': '9102', 'Alice': '2341', 'Cecil': '3258'}此处为浅复制, 当原始字典修改值(不是替换)时,副本也受影响 . 未解决这个问题,可以使用深复制: deepcopy
>>> e={}>>> e{}>>> e['name']=['a','b']>>> e{'name': ['a', 'b']}>>> c=e.copy()>>> dc=deepcopy(e)>>> e['name'].append('c')>>> c{'name': ['a', 'b', 'c']}>>> dc{'name': ['a', 'b']}>>> e{'name': ['a', 'b', 'c']}
3 fromkeys
使用给定的键家里新的字典, 每个键对应的值为None .
>>> dict.fromkeys(['name','age']){'age': None, 'name': None}
也可以使用自己的默认值
dict.fromkeys(['name','age'],'(unknow)'){'age': '(unknow)', 'name': '(unknow)'}4 get
是一种更宽松的访问字典的方法, 此种方法访问字典中不存在的的项时不会出错
>>> d={}>>> print d['name']Traceback (most recent call last): File "<pyshell#135>", line 1, in <module> print d['name']KeyError: 'name'>>> print d.get('name')None
这里也可以返回默认值
>>> print d.get('name','N/A')N/A
5 has_key
检查字典中是否含有给出的键
>>> d.has_key('name')False
6 items和iteritems
items 将字典所有项以列表方式返回
>>> x{'Beth': '9101', 'Alice': '2341', 'Cecil': '3258'}>>> x.items()[('Beth', '9101'), ('Alice', '2341'), ('Cecil', '3258')]
iteritems 返回一个迭代器 (具体参照Python学习笔记(九))
7 keys和 iterkeys
keys将所有字典中的键以列表方式返回, iterkeys返回迭代器
8pop
pop 用来获得应用于给定键的值,然后将这个键-值从字典中删除
>>> x{'Beth': '9101', 'Alice': '2341', 'Cecil': '3258'}>>> x.items()[('Beth', '9101'), ('Alice', '2341'), ('Cecil', '3258')]>>> x.pop('Beth')'9101'
9 popitem
弹出随机的项. 字典中不存在有关顺序的概念(与map不同) ,若想一个接一个的移除并处理项,这个方法将非常有用.
>>> y{'Beth': '9102', 'Alice': '2341', 'Cecil': '3258'}>>> y.popitem()('Beth', '9102')>>> y{'Alice': '2341', 'Cecil': '3258'}
10 setdefault
某种程度上类似于get, 就是能够获得与给定键相关联的值, 除此之外,还能在字典不含相应键值的情况下设置相应键值
>>> y.setdefault('L','N/A')'N/A'
11 update
update可以用一个字典更新另一个字典
>>> x{'Alice': '2341', 'Cecil': '3258'}>>> y{'Alice': '2341', 'L': 'N/A', 'Cecil': '3258'}>>> x.update(y)>>> x{'Alice': '2341', 'L': 'N/A', 'Cecil': '3258'}12 values 和itervalues
values方法以列表的形式返回字典中的值(itervalues返回值的迭代器)
>>> y{'Alice': '2341', 'L': 'N/A', 'Cecil': '3258'}>>> y.values()['2341', 'N/A', '3258']
- Python学习笔记(四) 字典: 当索引不好用时
- Python学习笔记-第四章 字典:当索引不好用时
- 《Python基础教程》学习笔记 Chap4 字典:当索引不好用时
- Python学习笔记【四】——《python基础教程》:: 字典:当索引不好用时
- Python基础编程(四)字典:当索引不好用时
- Python基础教程笔记——字典:当索引不好用时
- Python基础--字典:当索引不好用时
- Python 字典:当索引不好用时
- 《Python基础教程》学习笔记之[D4]当索引不好用时—字典
- Python基础教程第四章学习笔记——字典:当索引不好用时
- 字典:当索引不好用时
- 字典:当索引不好用时
- Python 第四章 字典:当索引不好用时
- 《python 基础教程》第四章 字典:当索引不好用时
- Python基础教程--字典;当索引不好用时
- FishC笔记—25 讲 字典:当索引不好用时
- 第四章-字典当索引不好用时:——python基础教程(第二版)笔记
- Chapter04 字典:当索引不好用时
- Grails中引用jar包
- hdu1151 二分图匹配最短路径覆盖
- 递归逆向输出字符串
- 手机应用软件测试点汇总
- Grails中引用jar包
- Python学习笔记(四) 字典: 当索引不好用时
- 解压缩zip文件
- 集合框架__【Set集合】【HashSet】【TreeSet】
- 十六进制转换为十进制
- CSDN博客之星评选——唯一入围GIS博客期待您的支持
- urb分析,usb_fill_bulk_urb函数理解
- Windows下开启Mysql慢查询详解
- eclipse配置heritrix环境
- HTTP协议