python---字典
1. 什么字典?
字典在python中是一个无序的数据集合,字典则是通过名字来引用值的数据结构,并且把这种数据结构称为映射,都存储在一个特定的键(key)下,键可以是数字、字符串甚至元组。字典也是python中唯一内建的映射类型。
2. 创建和使用字典
字典的创建:
元素由键(key)和值(value)组成;
可以用dic()函数或者方括号{}创建,元素之间用‘,’分割,键与值用‘:’隔开;
键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变得
可以使用键(key)来访问元素
1.
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} print(heros['及时雨']) # 运行结果:宋江 hero_star = {'天罡星': {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}, '地煞星': {'母夜叉': '孙二娘'}} print(hero_star['天罡星']) #运行结果:{'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
print(hero_star['天罡星']['及时雨']) #运行结果:宋江
2. 使用dict函数通过关键字的参数来创建字典
heros = dict(及时雨 = '宋江', 玉麒麟 = '卢俊义', 花和尚 = '鲁智深')
字典的基本操作
1. 增
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} heros['母夜叉'] = '孙二娘' print(heros)
# 运行结果:{'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深', '母夜叉': '孙二娘'}
2. 改
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} heros['及时雨'] = '宋公明' print(heros['及时雨']) # 运行结果:宋公明
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} dict_val = {'母夜叉': '孙二娘', '豹子头': '林冲'} heros.update(dict_val) print(heros) # 运行结果:(将dict_val 添加在字典heros后边) {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深', '母夜叉': '孙二娘', '豹子头': '林冲'} heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} dict_val = {'母夜叉': '孙二娘', '豹子头': '林冲', '花和尚': '鲁智深'} heros.update(dict_val) print(heros) # 运行结果:(将dict_val与heros重复的'花和尚': '鲁智深' 去掉, 再添加到heros后边) {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深', '母夜叉': '孙二娘', '豹子头': '林冲'}
3. 删
1. del: 通过键值删除一个元素,也可以删除整个字典
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} del heros['及时雨'] print(heros)
# 运行结果:{'玉麒麟': '卢俊义', '花和尚': '鲁智深'}
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} del heros print(heros) # 运行结果:NameError: name 'heros' is not defined
2. pop: 通过键名删除元素
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} heros.pop('花和尚') print(heros) # 运行结果: {'及时雨': '宋江', '玉麒麟': '卢俊义'}
3. popitem:删除最后一个元素
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} heros.popitem() print(heros) # 运行结果:{'及时雨': '宋江', '玉麒麟': '卢俊义'}
4. clear:清空列表
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} heros.clear() print(heros) #运行结果:{}
4. 查 in(通过键值查询)
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} if '及时雨' in heros: print('该元素在字典中') else: print('该元素在字典中') #运行结果:该元素在字典中
5. 取值
1. keys() 取键名
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} keys = heros.keys() print(keys) #运行结果: dict_keys(['及时雨', '玉麒麟', '花和尚']),这里边的dict_keys 是一个可迭代对象 print(list(keys)) #运行结果:将结果转换成列表 #['及时雨', '玉麒麟', '花和尚']
2. values() 取键值
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} values = heros.values() print(values) #运行结果:dict_values(['宋江', '卢俊义', '鲁智深']) 也是一个可迭代对象 print(list(values)) #运行结果:将结果转换成列表 #['宋江', '卢俊义', '鲁智深']
3. items() 获取字典里边的元素也就是键值对
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} items = heros.items() print(items) 运行结果:dict_items([('及时雨', '宋江'), ('玉麒麟', '卢俊义'), ('花和尚', '鲁智深')]) print(list(items)) #运行结果:[('及时雨', '宋江'), ('玉麒麟', '卢俊义'), ('花和尚', '鲁智深')] print(list(items)[0]) #运行结果:('及时雨', '宋江') key, value = list(items)[0] print(key) print(value) #运行结果: #及时雨 #宋江
6. 复制 copy()
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} heros_copy = heros.copy() heros.pop('及时雨') print(heros) # 运行结果 {'玉麒麟': '卢俊义', '花和尚': '鲁智深'} print(heros_copy) # 运行结果:{'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'}
7. 遍历
1. 遍历key
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} keys = heros.keys() for key in keys: print(key) """ 运行结果: 及时雨 玉麒麟 花和尚 """
2. 遍历value
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} values = heros.values() for value in values: print(value) """ 运行结果: 宋江 卢俊义 鲁智深 """
3. 遍历item
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} items = heros.items() for item in items: print(item) """ 运行结果: ('及时雨', '宋江') ('玉麒麟', '卢俊义') ('花和尚', '鲁智深') """
4. 遍历key->value
heros = {'及时雨': '宋江', '玉麒麟': '卢俊义', '花和尚': '鲁智深'} items = heros.items() for key, value in items: print(f'{key}->{value}') """ 运行结果: 及时雨->宋江 玉麒麟->卢俊义 花和尚->鲁智深 """