1,dictionary是除list外最灵活的内置数据结构类型,用**{}括起**来。
以键值的方式存储数据
字典中的元素是无需的
键是不可变序列,不允许重复,值可以重复
字典可以根据需要动态伸缩
字典会浪费比较大的内存,是一种以空间换时间的数据结构
2,创建
#第一种使用{}创建
d1={'Alice':98,'Abby':99}
#第二种使用dict()创建
d2=dict(name='Alice',age=12)
#创建空字典
d3={}
3,获取字典中的元素
d1={'Alice':98,'Abby':99,'Tom=98}
#第一种使用[],键不存在就抛出keyError
print(d1['Alice'])
#第二种使用get(),键不存在返回默认值
print(d1.get('Alice'))
print(d1.get('Lucy'))
4,key的判断
d1={'Alice':98,'Abby':99,'Tom=98}
print('Lucy' in d1)
print('Lucy' not in d1)
5,删除
del d1['Alice'] #删除指定键值对
d1.clear() #清空
6,新增
d1['Lucy']=99
7,视图
d1={'Alice':98,'Abby':99,'Tom':98}
keys=d1.keys()
print(keys,type(keys))
values=d1.values()
print(values,type(values))
items=d1.items()
print(items)
8,字典元素遍历
d1={'Alice':98,'Abby':99,'Tom':98}
for item in d1:
print(item) #只获取键
print(item,d1[item]) #获取键值对
print(item,d1.get(item)) #另一种方式获取键值对
9,字典生成式
内置函数zip(),用于将可迭代对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表
name=['Alice','Abby','Tom']
score=[98,99,98]
d={name.upper():score for name,score in zip(name,score)}
print(d)
10,字典的内置函数
cmp(dict1,dict2) 比较2个字典元素
len(dict) 计算字典元素个数即键的总数
str(dict) 输出字典中可打印的字符串
type(variable) 返回输入的变量类型,若是字典就返回字典类型
radiansdict.clear() 清除字典中的所有元素
radiansdict.copy() 返回一个字典的浅复制
radiansdict.formkeys() 创建一个新字典,以序列seq中的元素做字典的键,val为所有字典的键对应的初始值
radiansdict.get(key,default=None) 返回指定键的值,如果键不在字典中,返回default的值
radiansdict.has_key() 如果键在字典里返回True,否则返回False
radiansdict.items() 以列表返回可遍历的(键,值)元组数据
radiansdict.keys() 以列表返回字典中所有的键
radiansdict.setdefault(key,default=None) 与get类似,但如果键不存在与字典中,将会添加键并将值设为default
radiansdict.update(dict2) 将dict2中的键/值对更新到dict中
radiansdict.values() 以列表返回字典中的所有值
注意:
不可变序列:字符串,元组(没有增删改操作)
可变序列:列表,字典(可以增删改,对象地址不发生改变)