1.描述
:大括号扩起来,内部可以存放多个元素,元素的表现形式
k : v ( { 键 :值 } ) 键值对形式。一帮只能通过键来访问值。
k 是不可变类型,整数,浮点数,字符串
key必须是不可变类型,value可以是任意类型
1.创建一个字典
dict_1 = { # 多行书写
'name1': 'monkey', # 键为字符串
1: 'cat', # 键为整型
2.0: 'tiger' # 键为浮点型
}
print(type(dict_1))
print(dict_1['name1']) # 通过键 访问值
print(dict_1[1]) # 访问不存在的值会报错
print(dict_1[2.0])
2.len() 统计字典中字典中键值对的个数
接上面程序
print(len(dict_1))
3.成员运算in 和 not in
某个值是否在这个群体中,返回值为布尔值。
字典中只默认提供key的访问,value不会暴露。
dict_1 = {
'name1': 'monkey',
1: 'cat',
2.0: 'tiger'
}
print('name1' in dict_1) # True
print('aaa' not in dict_1) # True
4.删除
dict_1 = {
'name1': 'monkey',
1: 'cat',
2.0: 'tiger'
} # del dict_1 字典就被删了
del dict_1['name1'] # del 删除dict_1 name1键对值
print(dict_1)
dict_1.pop(1) # 弹出 键对值 1, 不是索引,索引无法使用
print(dict_1)
5.值keys(), 值values, 键对值items()
获取的值的结果可以直接看成是列表,但还需要list()转换
dict_1 = {'name1': 'monkey', 1: 'cat',2.0: 'tiger'}
print(dict_1.keys()) # 获取所有键的名称
print(dict_1.values()) # 获取所有值得内容
print(dict_1.items()) # 获取所有键对值的内容
x = list(dict_1.items()) # 获取的的值转为列表
print(x[0])
解压序列(或者任何可迭代对象)赋值给多个变量,唯一的前提就是,变量的数量必须跟序列元素的数量一样。
dict_1 = {'name1': 'monkey', 1: 'cat',2.0: 'tiger'}
for i in dict_1.keys(): # 一个值
print(i) # 迭代输出键名
for i in dict_1.values():
print(i) # 迭代输出值
for i,n in dict_1.items():# 两个值
print(i, n) # 迭代输出键对
6.循环 “字典for循环只能获取到key”
dict_1 = {'name1': 'monkey', 1: 'cat',2.0: 'tiger'}
for i in dict_1: # 依次输出键值
print(i)
7. .get 通过字典key获取字典的value值
正常情况
dict_1 = {'name1': 'monkey', 1: 'cat',2.0: 'tiger'}
print(dict_1['name1'])
print(dict_1.get('name1'))
访问不存在的键时,正常访问 直接报错
dict_1 = {'name1': 'monkey', 1: 'cat',2.0: 'tiger'}
print(dict_1['name']) # 报错
# KeyError: 'name'
访问不存在的键时,.get访问 返回None 空值,也可以返回指定的内容
dict_1 = {'name1': 'monkey', 1: 'cat',2.0: 'tiger'}
print(dict_1['name']) # None 空值
print(dict_1.get('name', '值不存在')) # 值不存在
8. .clear清空字典
dict_1 = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
dict_1.clear()
print(dict_1) # {}
9.创建字典的多种方式
# 第一种创建字典的方式
dict_1 = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
print(dict_1) # {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
# 第二种创建字典的方式
dict_2 = dict(k1='v1', k2='v2', k3='v3')
print(dict_2) # {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
# 第三种创建字典的方式
dict_3 = [
['k1', 'v1'],
['k2', 'v2'],
['k3', 'v3']
] # [['k1', 'v1'], ['k2', 'v2'], ['k3', 'v3']]
d = {} # 创建空字典
for i in dict_3: # d[_] = _
d[i[0]] = i[1] # d['k1']='v1' == {'k1': 'v1'}
print(d)
# 还可以这样玩
for x,y in dict_3: # d[_] = _
d[x] = y
print(d)
10. dict.formkeys() 快速生成一个字典
x = ['a', 'b', 'c'] # 列表的表项被作为键
list_1 = dict.fromkeys(x,1) # 统一添加值
print(list_1)
11. .popitem() 随机弹出一组键值
dict_1 = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
dict_1.popitem() # 弹出
print(dict_1)
dict_1.popitem() # 弹出
print(dict_1)
12. .setdefault() 查询键对值不存在 则新建;键存在获取到键对应的值
dict_1 = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
dict_1.setdefault('k4','v4') # __键 , __值
print(dict_1)
print(dict_1.setdefault('k4')) # v4
print(dict_1.setdefault('k5')) # None
13. .update() 键不存在则新建,存在则修改
dict_1 = {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}
dict_1.update({'k4':'V4'}) # 不存在则添加
print(dict_1) # 值少了后,k4 被分为k,4
dict_1.update({'k1':'6'}) # 键存在则修该值
print(dict_1)