Chapter07 python基础——字典

一、字典dict

(一)介绍

字典是一种可变的容器,可以存储任意类型数据

字典中的每个数据都是用"键"进行索引的,而不像序列可以用下标(index)来进行索引

字典中的数据没有先后顺序关系,字典的存储是无序的

字典中的数据以键(key)-值(value)对的形式进行映射存储

字典的键不能重复,只能用"不可变的类型作为字典的键"

字典的字面值得表示方式:

字典的表示方式以{}括起来,以冒号(:)分隔键-值对

各键-值对中间用逗号分隔开

 

(二)创建字典:

d={}       #d绑定空字典

创建非空字典:

d = {'name':'Jane','age':16}

d = {'year':2018,'month':4,'day':1}

 

(三)字典的构造函数dict

dict()   生成一个空字典,等同于{}

dict(iterable)  用于迭代对象初始化一个字典

dict(**kwargs)  用命名关键字传参形式生成一个字典

示例:

d = dict()

d = dict([('name','Jane'),('age',15)])

d = dict(name='Jane',age=15)

 

(四)字典的键为不可变类型:

bool,int,float,complex,str,tuple,frozenset(固定集合),bytes(字节串),包括None

可变的类型(不能充当字典的键):list,dict,set(集合),bytearray(字节数组)

 

(五)字典的基本操作:

(1)键索引:

语法:字典(键)

示例:

>>>d = {‘name’:’Jane’,’age’:15}

>>>d{‘name’}

‘Jane’

>>>d{‘age’}

15

(2)添加/修改字典元素

字典[键] = 值对象

示例:

d = {}

d[‘birthday’] = (2002,1,1)        #添加键值对

d[‘age’] =16                   #添加

d[‘age’]=17                   #修改‘age’键对应的值

 

(六)删除字典元素del语句

语法:del 字典[键]

示例:

d = {‘name’:’Jane’,’age’:16}

del d[‘age’]     #删除‘age’键,无键则无值,即同时删除了值

 

(七)字典的成员资格判断 in/ not in运算符

用in 运算符可以判断一个键是否存在于字典中,如果存在则返回True,否则返回False

not in 返回值与 in 相反

示例:

d = {1:"一",2:"二"}

1 in d              #True

2 not in d           #False

 

(八)列表的in 运算符和字典的in运算符比较:

(1)列表的in运算符计算时间会因为列表中元素个数的增加而增加

L = [3,4,5,6,……,10976]
if 888 in L:
    print(“888在列表中”)             #慢

(2)字典的in运算符计算时间不会因为键值对的个数增加而增加,操作速度快于列表:

d= {3:”三”,4:“四”,5:“五”,……,10976:None}
if 888 in d:
    print(“888在字典的键中”)             #快

 

(九)字典的迭代访问:

容器是可迭代对象,字典只能对键进行迭代访问

d = {'name':'小张','birthday':(2008,8,8)}
for k in d:
    print(k)
    print(d[k])

可以用于字典的内建(built-in)函数:

len(x)          返回字典的键值对的个数

max(x) 返回字典的键的最大值

min(x) 返回字典的键的最小值

sum(x) 返回字典的所有键的和

any(x) 对所有键进行真值测试,有一个True结果为True

all(x)           对所有键进行真值测试,所有为True才为True

示例:

d = {1:'one',2:'two',3:'three'}
for kv in d.items():
    print(kv)

#-->(1,’one’)
#   (2,’two’)
#   (3,’three’)

 

(十)字典推导式:

作用:用可迭代对象生成字典

语法:

{键表达式:值表达式 for 变量 in 可迭代对象[if 真值表达式]}

注:[]的内容代表可省略

no = [1001,1002,1003,1004]
names = ['Tom','Jerry','Spike','Tyke']
d = {no[i]:names[i] for i in range(len(no))}

#或者
d = {i:j for i in no for j in names}

#-->d = {1001:’Tom’,1002:’Jerry’,1003:’Spike’,1004:’Tyke’}

 

(十一)字典推导式的嵌套:语法同列表推导式嵌套

 

(十二)字典vs列表

都是可变对象

索引方式不同,列表用整数索引,字典用键索引

字典的查找速度可能会快于列表(重要)

列表的存储是有序的,字典的存储是无序的

你可能感兴趣的:(python)