一、定义
使用一对大括号表示,元素中间使用英文逗号,元素包括key,value,其中键使用不可变类型,例如:整数,字符串,元祖等,不能是列表,key和value之间使用冒号分割,key是不可重复对象
二、基本操作
1、定义对象:
1)、定义字典对象
d={1:["中华","玉溪"],(2,):["五粮液","茅台","郎酒"],1:["蓝带","百威","青岛"]}
# <class 'dict'> {1: ['蓝带', '百威', '青岛'], (2,): ['五粮液', '茅台', '郎酒']}
2)、定义空字典
d2={}
3)、通过dict内置函数,得到字典
#通过dict内置函数,得到字典
xli=("中华","一汽","奇瑞")
yli=[["尊驰","骏捷","V5"],["迈腾","速腾"],["QQ","路虎"]]
z=zip(xli,yli)
#通过dict函数将zip对象转换成字典对象
d3=dict(z)
# {'中华': ['尊驰', '骏捷', 'V5'], '一汽': ['迈腾', '速腾'], '奇瑞': ['QQ', '路虎']}
2、字典对象的操作
1)、添加或修改
引用key完成添加或者修改,如果key不存在,则添加,key存在则修改
d={"唐朝":["李白","杜甫"]}
#添加
d[6]=("洪秀全","石达开","韦昌辉")
# 结果:{'唐朝': ['李白', '杜甫'], 6: ('洪秀全', '石达开', '韦昌辉')}
#如果key存在,修改
d['唐朝']=('白居易','孟浩然','王维')
2)、使用update返回添加或修改另一个字典对象
d={1:"aa",2:"bbb"}
k={8:"汉字",6:"汉服",2:"胡服"}
#调用update修改字典对象
d.update(k)
#结果{1: 'aa', 2: '胡服', 8: '汉字', 6: '汉服'}
3)setdefault方法获取key,如果key不存在则在原字段中添加key-vakue
x={8:'aa',9:'bb'}
y=x.setdefault(18,"cc")
#返回结果cc {8: 'aa', 9: 'bb', 18: 'cc'}
3、删除
1)使用pop()或者popitem()方法
pop()方法按key获取对应的value,并从字典中删除该key-value
popitem()方法弹出最后一对key-value,并从字典中删除该key-value
两种方法均有返回值,按key删除,如果key不存在则抛出异常
d={"bike":8,"abs":(1,3,5),"kite":[8.5,6.6]}
d.popitem()
#{'bike': 8, 'abs': (1, 3, 5)}
2)、使用del按key删除key-value,或者删除引用对象
#按key一对数据删除
# del d["宋朝"]
#KeyError: '宋朝'
del d["唐朝"]
print(d) #{}
#删除引用对象
# del d
# print(d) #name 'd' is not defined
4、查询
1)、fromkey,创建值为None的对象
x={1:'张新杰',2:'李彪',3:'刘国臣'}
y=(2,4,6)
#按key创建值为None的字典对象
z=x.fromkeys(y) #有没有x都行
# <class 'dict'> {2: None, 4: None, 6: None}
2)get方法,获取key对应的值,如果key不存在,返回默认值
x={1:'张新杰',2:'李彪',3:'刘国臣'}
#按键查询对应值,这种方法如果key不存在,抛出异常
z=x[3]
# 输出:刘国臣
print(z)
#get方法 获取key对应的值,如果key不存在,返回默认值
z=x.get(8,"我是一个默认的值")
3)、从字典集合中获取key
x={"三国演义":["刘备","曹操","孙权"],"水浒":["西门庆","潘潘","李瓶儿","吴用"]}
#从字典集合中获取key
for k in x:
print(k)
4)、迭代字典项目
vs=x.values()
#<class 'dict_values'> dict_values([['刘备', '曹操', '孙权'], ['西门庆', '潘潘', '李瓶儿', '吴用']])
#print(type(vs),vs)
for it in x.items():
print(it)
5)、获取字典对象的key集合
keys=x.keys()
#<class 'dict_keys'> dict_keys(['三国演义', '水浒'])
print(type(keys),keys)
6)获取字典对象的values部分
vs=x.values()
#<class 'dict_values'> dict_values([['刘备', '曹操', '孙权'], ['西门庆', '潘潘', '李瓶儿', '吴用']])
#print(type(vs),vs)
三、字典推导式
#字典推导
# i=8
# s=str(i)
# print(type(s),s)
h={i:[j for j in range(1,i)] for i in range(3,6)}
#输出结果:{3: [1, 2], 4: [1, 2, 3], 5: [1, 2, 3, 4]}
ali=[10,20,30]
bli=["JJ","QQ","KK"]
z=zip(ali,bli)
#迭代zip对象
# for k,v in z:
# print(k,v)
字典推导式:
#字典推导式
c={k:v for k,v in z}
print(type(c),c)