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}')
"""
运行结果:
及时雨->宋江
玉麒麟->卢俊义
花和尚->鲁智深
"""


浙公网安备 33010602011771号