一、什么是字典
1.是一种可变的容器,可以存储任意类型的数据 | |
2.数据没有先后顺序关系,字典存储是无序的,所以没有+-*/的运算 | |
3.每个数据都是用“键“(key)进行索引 而不像序列可以用下标来进行索引 | |
4.以“键值对”的形式进行映射存储 | |
5.键不能重复,否则可能会丢失,且只能用不可变类型[W用2] 作为字典的键 值可以是任何类型 | |
字典的字面值表示方式 | 用花括号{ }括起来,用冒号:分隔键-值对,用逗号,将各键值对分隔开 |
创建空字典 | d = { } |
创建非空字典 | d = {‘name’:‘tarena’,‘age’:15 } |
错误示例 | d = {‘a’:1,‘b’:2,‘a’:‘-’} |
二、字典的创建函数
Dict() | 创建空字典,等同于{} |
Dict(iterable) | 用可迭代对象初始化一个字典 |
Dict(**kwargs) | 关键字传参形式生成一个字典 |
示例 |
|
D = dict() D = dict([(‘name’,‘terena’),(‘age’,15)]) D = dict(name=‘tarena’,age=15) |
关键字传参 |
L= [(‘name’,‘terena’),(‘age’,15)] Dict(L) |
>>>(‘name’,‘terena’),(‘age’,15) |
Dict(name=[1,2,3,4],1=[5,6,7,8]) | >>>报错,表达式中的变量名不能以数字来取 |
Dict(name:[1,2,3,4],1:[5,6,7,8]) | >>>可以 |
三、字典的基本操作
键索引 | 用[ ]运算符可以获取和修改键所对应的值 |
语法 | 字典[ 键 ] |
3.1添加/修改字典的元素
语法 | 字典[ 键 ] = 值 |
说明 1.当键不存在时,创建键并绑定键对应的值 2.当键存在时,修改键绑定的对象 | |
示例 | |
D = {‘name’:‘tarena’,‘age’:15} Print(‘姓名:’d[‘name’],‘年龄:’,d[‘age’]) >>>姓名:tarena 年龄:15 |
3.2删除字典的元素
语法 | del 字典[ 键 ] |
示例 |
|
d = { 1:“星期一”,2:“星期二” } del d[ 2 ] |
|
四、In 运算符
Also called 成员资格判断运算符
判断一个键是否存在于字典中。存在,返回True;否则,返回False | |
示例 |
|
D = {1:“one”,2:“two”,“三”:“three”} 1 in D ‘二’in D 3 not in D ‘one’ in D |
>>>True >>>False >>>True >>>False |
五、字典的迭代访问
1.字典是可迭代对象,只能对键进行访问 |
|
示例 |
|
D = {1:“one”,2:“two”,“三”:“three”} for k in d: print(k,‘对应的值是:’,d[ k ]) |
>>>k为D里的键;d[ k ]为D里的值 |
六、内建(built-in)函数
Len(x) | 返回键值对的个数 |
Max(x) | 返回键的最大值 |
Min(x) | 返回键的最小值 |
Sum(x) | 返回键的和 |
Any(x) | 对键的真值测试,一真即真 |
All(x) | 对键的真值测试,一佳即假 |
示例 |
|
D = {1:“one”,2:“two”,“三”:“three”} Max(D) | >>>报错,可以比1和2的大小,比不了‘三’的值 |
七、字典的方法
见文档
示例1 |
D = {1:“one”,2:“two”,3:“three”} for k,v in d.items() : print(“字典的键是:”,k,‘值是: ’,v) |
>>> 字典的键是:1 值是:one …. |
示例2 |
for t in d.items(): print( t ) |
>>> (1:“one”) … 注:t返回的是以元组形式呈现的键值对。 |
八、字典的推导式
用可迭代对象依次生成字典的表达式 | |
语法 | {键表达式:值表达式 for 变量 in 可迭代对象 [ if 真值表达式 ]} 注:[]及其中的内容代表可略 |
说明 | 1.先从可迭代对象中取值 2.用变量绑定 3.用if进行条件判断,如果为真,则执行下一步 4.执行‘键表达式’和‘值表达式’,然后加入到新字典中 5.可嵌套,语法同列表推导式 |
示例 | 生成一个字典,键为1~9,值为键的平方 |
| d = { x:x ** 2 for x in range(1,10)} |
九、字典 VS 列表
都是可变对象 | |
字典查找速度可能快于列表 | |
列表用整数索引, | 字典用键索引 |
列表存储有序, | 字典存储无序 |
列表in查找:一个一个比对 | 字典in查找: |
列表和字典的内部存储原理 | |
顺序存储,每个元素都是挨着存储的。 | 映射存储,哈希存储,所以它是无序的、散列的 |
通过index查找:直接找到相应index就可以 |
|
通过in查找:要一个一个比对相应的值, | 通过in查找:通过键直接在内存找到键对应的地址,取出键对应的值 |
尾插、中间插,都很慢 | 删改查都快 |
[W用2]可变的有list, dict
[W用3]del可删除变量、列表的元素、字典的键