字典:当索引不好用时
1 字典定义:
- 说明:通过名字引用值的数据结构称为映射,字典是Python中唯一内建的 映射类型;
2 字典的使用:
- 说明:通过检查到特定的词语(键),查找到它的含义(值);
- 注意:比较适合电话薄,词典这类实现
- 例子:
1: #用列表来实现电话薄
2: >>> phoneNumbers = ['213123','542113','543231','974723']
3: >>> names=['Ada', 'Bill', 'Candy', 'David']
4: >>> phoneNumbers[names.index('Bill')]
5: '542113'
6: >>>
7:
3 创建和使用字典
- 说明:字典是由多个键以及其对应的值组成的键值对组成的,字典以左大 括号开始,并以右大括号结束,键与值之间用冒号分隔,键值对儿之间用 逗号分隔;
- 注意:字典中的键是唯一的
- 例子:
1: >>> mydict={'ada':'1111', 'Bill':'2222', 'Candy':'3333'}
2: >>> mydict['Bill']
3: '2222'
4: >>>
5:
3.1 dict函数
- 说明:用于创建字典的内建函数,参数可以是键与值的序列,可以是关键 字参数,也可以是其他的映射;
- 注意:如果不给dict提供参数,则会返回一个空字典
- 例子:
1: #将序列转换成字典
2: >>> mylst=[('name', 'Bill'),('age', 30)]
3: >>> mydict = dict(mylst)
4: >>> mydict
5: {'age': 30, 'name': 'Bill'}
6: >>> mydict['name']
7: 'Bill'
8:
9: #通过向dict函数传递参数来创建字典
10: >>> mylst = dict(height=183,weight=161,hair='black')
11: >>> mylst['hair']
12: 'black'
13:
14: #通过字典来创建另一个字典
15: >>> mylst = dict(mydict)
16: >>> mylst
17: {'age': 30, 'name': 'Bill'}
18: >>>
19:
3.2 基本字典操作
- 说明:
- len(d):获取字典中键值对的数量;
- d[k]:键k对应的值;
- d[k]=v:将值v赋给键k;
- del d[k]:删除字典d中键为k的项;
- k in d:判断字典d中是否包含键为k的项;
- 注意:
- 键类型:键类型可以是任意不可变类型,如整数,浮点数,字符串等;
- 自动添加:如果字典中不包含指定的键,可以通过赋值增加新项;
- 成员资格:k in d 是查找字典中是不是有键k对应的项,而列表是查 找的是值,v in l, 值v是不是在列表中;
- 字典中检查键的效率要比列表检查值的高效;
- 例子:
1: #电话薄
2: people = {
3: 'Bill Gunn':
4: {
5: 'phone': '123456',
6: 'addr': 'Tianjin'
7: },
8: 'Media Zhang':
9: {
10: 'phone': '999999',
11: 'addr': 'Beijing'
12: }
13: }
14: #输出内容
15: lables = {
16: 'phone' : 'phone number',
17: 'addr' : 'address'
18: }
19: #用户名
20: name = input('Name:')
21: key = input('Phone number(p) or address(a):')
22: if key == 'p' : key = 'phone'
23: if key == 'a' : key = 'addr'
24: if name in people:
25: print("%s %s is %s" % (name, lables[key], people[name][key]))
26: input('Press enter!')
27:
28: >>>
29: Name:Bill Gunn
30: Phone number(p) or address(a):a
31: Bill Gunn address is Tianjin
32: Press enter!
33:
3.3 用字典格式化字符串
- 说明:在格式化字符串中的格式化说明符后添加 键 ,并且 键 需要 用圆括号括起来;
- 例子:
1: >>> table = {
2: 'Alice' : '457819',
3: 'Bill' : '929181',
4: 'Candy' : '826213'}
5: >>> print("Alice's phone number is %(Alice)s." % table)
6: Alice's phone number is 457819.
7: >>>
8:
3.4 字典方法
3.4.1 clear
- 说明:用于清除字典中全部的键值对儿,调用完该方法后,原字典变成一 个空字典;
- 注意:该方法直接操作原字典,调用后不返回值(或者说直接返回 None )
- 例子:
1: #字典清空函数的一般用法
2: >>> mydict = {'Bill':'8289213', 'Candy':'192831'}
3: >>> mydict.clear()
4: >>> mydict
5: {}
6: >>>
7:
8: #字典清空的情况一
9: >>> x = {'Bill':'213121'}
10: #y和x指向同一个字典对象
11: >>> y = x
12: # x 指向一个空字典
13: >>> x = {}
14: # y 仍然指向原字典
15: >>> y
16: {'Bill': '213121'}
17: >>>
18:
19: #字典清空的情况二
20: >>> x = {'Name' : 'Bill'}
21: #y也指向字典
22: >>> y = x
23: #对字典中的项操作
24: >>> x['Name'] = 'Candy'
25: # y 也跟着变化
26: >>> y
27: {'Name': 'Candy'}
28: #清空字典 x
29: >>> x.clear()
30: #y也被清空了
31: >>> y
32: {}
33: >>>
34:
3.4.2 copy
- 说明:用于创建一个新的字典,用两种复制方法:copy和deepcopy
- 注意:
- copy在复制过程中,如果字典中的 值 对象是复杂对象,如列表, 字典等等,则拷贝完后,新的字典中的 值 指向的还是原字典中的 对象,所以修改新对象中的 值 ,同时也是修改原字典中的值,但 是如果字典中的对象是普通类型,如是数字,字符串等,则修改新字 典不会影响原字典。
- 例子:
1: #copy的用法和效果
2: >>> x = {'Name' : 'Bill', 'Colors': {'red', 'green', 'blue'}}
3: >>> y = x.copy()
4: >>> y
5: {'Colors': ['blue', 'green', 'red'], 'Name': 'Bill'}
6: #删除颜色列表中的 ‘red’
7: >>> x['Colors'].remove('red')
8: >>> x
9: {'Colors': ['blue', 'green'], 'Name': 'Bill'}
10: #y字典中的颜色列表也发生的改变
11: >>> y
12: {'Colors': ['blue', 'green'], 'Name': 'Bill'}
13: >>>
14:
15:
16: #deepcopy的用法和效果
17: >>> from copy import deepcopy
18: >>> x = {'colors':['red','green','blue'],'name':'Bill'}
19: >>> x
20: {'colors': ['red', 'green', 'blue'], 'name': 'Bill'}
21: #将x深拷贝给y
22: >>> y = deepcopy(x)
23: >>> y
24: {'colors': ['red', 'green', 'blue'], 'name': 'Bill'}
25: #修改x
26: >>> x['colors'].remove('red')
27: >>> x
28: {'colors': ['green', 'blue'], 'name': 'Bill'}
29: #y没有发生改变
30: >>> y
31: {'colors': ['red', 'green', 'blue'], 'name': 'Bill'}
32: >>>
33:
3.4.3 fromekeys
- 说明:根据键创建新的字典;
- 例子:
1: >>> {}.fromkeys(['name','age'])
2: {'age': None, 'name': None}
3: >>> x.fromkeys(['age'])
4: {'age': None}
5: >>>
6:
3.4.4 get
- 说明:是个更宽松的访问字典项的方法,如果键在字典中,则返回值, 如果不在,返回空,也可以给不存在的键指定默认值;
- 例子:
1: >>> x = {'name': 'Bill'}
2: #字典中包含指定的键
3: >>> x.get('name')
4: 'Bill'
5:
6: #字典中不包含指定的键,返回空
7: >>> x.get('age')
8:
9: #为不包含的键指定默认值
10: >>> x.get('age', 'N/A')
11: 'N/A'
12: >>>
13:
3.4.5 has_key
- 说明:可以检查字典中是否含有给出的键,python3中已经 不 包含此 项,可以用 k in dict 的方式代替;
3.4.6 items和iteritems
- 说明:items以列表方式返回字典中的键值对,iteritems以迭代器对象 返回键值对儿(Python3中不再支持);
- 例子:
1: >>> x
2: {'name': 'Bill'}
3: >>> x.items()
4: dict_items([('name', 'Bill')])
5:
6: #python3中不再包含iteritems
7: >>> x.iteritems()
8: Traceback (most recent call last):
9: File "<pyshell#66>", line 1, in <module>
10: x.iteritems()
11: AttributeError: 'dict' object has no attribute 'iteritems'
12:
3.4.7 keys
- 说明:返回字典中的 键
- 例子:
1: >>> x = {'Name':'Bill', 'Age':'30'}
2: >>> x
3: {'Age': '30', 'Name': 'Bill'}
4: >>> x.keys()
5: dict_keys(['Age', 'Name'])
6: >>>
7:
3.4.8 pop
- 说明:用于获取给定键的值,并将该键值对从字典中移除
- 例子:
1: >>> x = {'a':1,'b':2}
2: >>> x
3: {'a': 1, 'b': 2}
4: >>> x.pop('a')
5: 1
6: >>> x
7: {'b': 2}
8: >>>
9:
3.4.9 popitem
- 说明:用于随机弹出字典中的键值对儿;
- 例子:
1: >>> x = {'a': '1', 'c': '3', 'b': '2'}
2: >>> while len(x) > 0:
3: x.popitem()
4: ('a', '1')
5: ('c', '3')
6: ('b', 2)
7: >>> x
8: {}
9:
3.4.10 setdefault
- 说明:可以获得给定键的值,如果字典中没有给定键,可以在字典中添 加给定键。如果没有指定给定键的默认值,并且给定键也不在字典中, 则在添加给定键后,将其值设置为 None 。
- 例子:
1: >>> x = {'a':'1','b':'2','c':'3'}
2: >>> x
3: {'a': '1', 'c': '3', 'b'/span>: '2'}
4: #字典中包含 a,所以返回键a对应的值1
5: >>> x.setdefault('a')
6: '1'
7: #因为字典中有键a,所以setdefault方法不会改变键a对应的值
8: >>> x.setdefault('a', 'A')
9: '1'
10: >>> x
11: {'a': '1', 'c': '3', 'b': '2'}
12: #字典中没有键d,调用setdefault方法时也没有设置默认值,
13: #所以调用后,在字典中添加了键为d的键值对儿,并返回空。
14: >>> x.setdefault('d')
15: >>> x
16: {'a': '1', 'c': '3', 'b': '2', 'd': None}
17: #调用setdefault时带默认值
18: >>> x.setdefault('e', '5')
19: '5'
20: >>> x
21: {'a': '1', 'c': '3', 'b': '2', 'e': '5', 'd': None}
22: >>> x.setdefault('d', '4')
23: >>>
24:
3.4.11 update
- 说明:将新字典中的键值对儿更新到原字典中,如果新字典中有的键值 对儿,原字典中没有,则会在原字典中增加新键值对儿;
- 例子:
1: >>> x = {'a':'1','b':'2','c':'3'}
2: >>> x
3: {'a': '1', 'c': '3', 'b': '2'}
4: >>> y = {'a':'A', 'z':'zoo'}
5: >>> x.update(y)
6: #键‘a’被更新到字典中,‘z’被添加到字典中
7: >>> x
8: {'a': 'A', 'c': '3', 'b': '2', 'e': '5', 'd': None, 'z': 'zoo'}
9: >>> z=[('g','11'),('q','12')]
10: >>> x.update(z)
11: >>> x
12: {'a': 'A', 'q': '12', 'c': '3', 'b': '2', 'e': '5', 'd': None, 'g': '11', 'z': 'zoo'}
13: >>>
14:
3.4.12 values和itervalues
- 说明:values返回字典中的值,itervalues已经不被python3支持。
- 例子:
1: >>> x
2: {'a': 'A', 'q': '12', 'c': '3', 'b': '2', 'e': '5', 'd': None, 'g': '11', 'z': 'zoo'}
3: >>> x.values()
4: dict_values(['A', '12', '3', '2', '5', None, '11', 'zoo'])
5: >>>
6:
Date: 2011-11-21 09:06:22
Author:
Org version 7.7 with Emacs version 23
Validate XHTML 1.0
分享到:
相关推荐
Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip Python 笔记源码——内含python后端&机器学习等.zip ...
Python学习笔记——运算符 运算符: 赋值运算符 算术运算符 关系运算符 逻辑运算符 位运算
"Python 计算思维训练——SAR 图像处理" 在 Python 计算思维训练中,SAR 图像处理是一个重要的应用领域。SAR 图像处理指的是使用Python 工具处理合成孔径雷达(Synthetic Aperture Radar)图像,以提取有价值的信息...
'千锋python基础教程:5、元组&字符串&字典' 千锋python基础教程:6、函数基础 '千锋python基础教程:7、装饰器&偏函数与作用域与异常处理与文件读写' 千锋python基础教程:8、os与窗口控制与内存修改与语言 第...
Python深度学习实战——基于Pytorch全书电子教案完整版ppt整套教学课件最全教学教程.pptx
第4章 字典:当索引不好用时 第5章 条件、循环和其他语句 第6章 抽象 第7章 更加抽象 第8章 异常 第9章 魔法方法、属性和迭代器 第10章 充电时刻 第11章 文件和素材 第12章 图形用户界面 第13章 数据库支持...
026字典:当索引不好用时2 027集合:在我的世界里,你就是唯一 028文件:因为懂你,所以永恒 029文件:一个任务 030文件系统:介绍一个高大上的东西 031永久存储:腌制一缸美味的泡菜 032异常处理:你不可
本课程“05-1:Python教程 课程 进阶编程 字典”深入讲解了字典的基础操作、内存分配、哈希算法、字典推导式以及常用方法,旨在提升Python开发者对字典的理解和应用能力。 **字典基础操作** 字典是由键值对组成的...
在本教程中,我们将深入探讨字典的基础操作、内存分配、哈希算法、字典推导式以及一些常用方法。这些知识点对于任何Python开发者来说都是不可或缺的。 首先,我们来看字典的基础操作。字典是由键和对应的值组成的...
### Python基础教程知识点总结 #### 一、课程概览 - **标题**:“Python基础教程(全60课)”,该教程旨在为学习者提供一套全面的Python编程基础教学资源。 - **描述**:这套教程提供了60个课程的学习资料,并且可以...
《Python基础教程》第三版源代码是一份详细的学习资源,涵盖了Python编程的多个核心概念和实践技巧。这个源代码集合包括了从基础语法到高级特性的各种示例,旨在帮助初学者逐步掌握Python编程。 在Python的基础部分...
Python学习笔记——输入input(),input()使用,两个练习。
"Python编程之美——带你进入Python语言世界"课程设计大纲参考 Python语言是一种高级、解释型的编程语言,它具有简洁、易学、强大等特点,广泛应用于数据科学、人工智能、网络爬虫、自动化操作等领域。本课程设计...
python 基础教程 第二版 高清 书签 中文: 本书包括Python程序设计的方方面面,首先从Python的安装开始,随后介绍了Python的基础知识和基本概念,包括列表、元组、字符串、字典以及各种语句。然后循序渐进地介绍了...
Python数据分析入门——数据清理案例资源文件,二手房数据
python项目——智慧校园考试系统.zip python项目——智慧校园考试系统.zip python项目——智慧校园考试系统.zip python项目——智慧校园考试系统.zip python项目——智慧校园考试系统.zip python项目——智慧校园...
《图灵程序设计丛书:Python基础教程(第2版 修订版)》包括Python程序设计的方方面面,首先从Python的安装开始,随后介绍了Python的基础知识和基本概念,包括列表、元组、字符串、字典以及各种语句。然后循序渐进...
python笔记 Python笔记学习笔记 :memo: 介绍 有时候想找一个东西(写法),但当下却忘记关键字,所以整理一篇学习笔记,要找资料的时候也比较方便。 有些是网路上找的范例,然后自己再修修改改,或者去参考一些...
Python数据分析基础教程主要涵盖使用Python语言进行数据处理、探索和可视化的基本概念和技术。Python因其语法简洁、库丰富而成为数据科学领域最受欢迎的编程语言之一。本教程将带你逐步走进Python数据分析的世界。 ...
【Python编程语言基础】 Python是一种高级、通用的编程语言,以其简洁、易...通过黑马程序员的Python教程,你将逐步建立起扎实的Python编程基础,并能应对各种实际问题,为进一步深入学习和应用Python打下坚实的基础。