字典dict是Python中特有的一种数据类型,可以理解为是一种可变容器模型,可储存任意类型对象,主要有以下特点:
(1)字典的每个键值(key>=value)对用冒号(:)分割,
(2)每个对之间用逗号(,)分割
(3)整个字典包括在花括号‘{}’中
(4)在一个字典中,键‘key’必须是唯一的,但值‘value’则不必唯一
下面我们来看一些基本的例子
(1)字典dict及映射
dic={'小明':18,'小红':17,'小李':20}#键值对必须同时出现
#key必须为字符串str型
print(dic)
dic1={'a':13,'a':24}#一个键值只能出现一次,
#同一个键值被赋值两次,后一个键值会被记住
print(dic1)
#字典是一个无序集合,通过key来对应值
dic1['小李']=21#添加一个key,直接添加,因为字典没有顺序
print(dic1)
dic1['小李']=30#修改key值
del dic1['a']#删除key=‘a’
print(dic1)
# del dic1 删除整个字典
输出结果:
(2)字典声明
dic={'a':'hello','b':200}#直接通过‘{}’生成字典
dic1=dict(Jack=20,Marry=25,Jone=19)#使用dict()函数生成字典
print(dic1)
##复合序列声明字典
lst1=[('a','b'),('c','d'),('e','f')]#创建列表lst1
lst2=[['m',1],['n',2]]#创建列表lst2
lst3=[('e',[1,2]),('f',[4,5])]#创建列表lst3
dic2=dict(lst1)#通过dict()将列表转为字典
dic3=dict(lst2)#通过dict()将列表转为字典
dic4=dict(lst3)#通过dict()将列表转为字典
print(dic2,dic3,dic4)
keys=['a','b','c','d']
dics=dict.fromkeys(keys)#通过fromkeys()生成一个空字典
dics1=dict.fromkeys(keys,3)#生成一个key全为3的字典
print(dics)
print(dics1)
输出结果:
(3)字典内置函数方法
dic1={'a':1,'b':2}
dic2={'c':3,'d':4}
dic1.update(dic2)#字典更新及数据合并,不会改变dic2
print(dic1,dic2)
dic3=dic2
dic2.update({'f':8})#dic3随着dic2变化而变化
print(dic2,dic3)
dic4=dic3.copy()#dic4不会随着dic3变化而变化
dic3.update({'m':9})
print(dic3,dic4)
print('字典长度为:',len(dic4))
##字典中是通过key来判断的,不判断value
print('a'in dic1)#判断a是否在字典dic1的key中
print(1 in dic1)#判断value 1是否在字典dic1中
##字典列表
data=[{'name':'Jack','age':20},
{'name':'Marry','age':21},
{'name':'Lucy','age':23}]
for i in data: #自定义函数,后面文章会提到
print(i['name'])
输出结果:
(4)字典元素的访问
dic={'a':1,'b':2,'c':3}#创建字典
print(dic['b'])#访问时访问key值,不可以用序列中索引的格式
##嵌套字典的访问
poi={'name':'Jack','city':'beijing','information':{'address':'somewhere','num':2233}}
print(poi['information']['address'])
data=[{'name':'Jack','age':20,'information':{'address':'somewhere','num':22331}},
{'name':'Marry','age':21,'information':{'address':'somewhere','num':22332}},
{'name':'Lucy','age':23,'information':{'address':'somewhere','num':22334}}]
print(data[2]['information']['num'])
##函数get()直接访问key
print(poi.get('name'))
print(poi.get('type'))
##输出字典所有key
print(poi.keys(),type(poi.keys()))
print(list(poi.keys()))#以列表的形式输出
##输出字典所有key对应的值
print(poi.values(),type(poi.values()))#value视图
print(list(poi.values()))#以列表的形式输出
##输出字典所有元素
print(poi.items(),type(poi.items()))
print(list(poi.items()))#每个元素只包括两个元素
##字典元素的遍历
poi={'name':'Jack','city':'beijing','information':{'address':'somewhere','num':2233}}
for keys in poi:
print(keys)
for values in poi.values():
print(values)
print('---')
for keys in poi:
print(poi[keys])
##访问键值对
for (k,v) in poi.items():
print('key为:%s,values为:%s'%(k,v))
输出结果:
以上是有关字典的一些基本操作,字典dict在做数据分析时是一个很常用的结构,建议掌握