一 字典 dict
定义
1. 由一系列键值对组成的可变,散列容器。
2. 散列:对键进行哈希运算,确定在内存中的存储位置,每条数据存储无先后顺序。
3. 键必须惟一且不可变(字符串/数字/元组),值没有限制。
基础操作
1. 创建字典:
字典名 = {键1:值1,键2:值2}
字典名 = dict (可迭代对象)
# 创建
dict01 = {}
dict02 = dict()
dict01 = {"悟空": 180, "八戒": 150, "张无忌": 170}
# 其他可迭代对象(格式) --> 字典
dict02 = dict([("悟空", 180), ("八戒", 150)]) #一对一对的迭代
2. 添加/修改元素:
语法:
字典名[键] = 数据
# 添加(如果key是不存在的)
dict01["唐僧"] = 190
# 修改(key存在的情况就是修改)
dict01["唐僧"] = 180
说明:
键不存在,创建记录。
键存在,修改值。
3. 获取元素:
变量 = 字典名[键] # 没有键则错误
# 获取
# -- 通过key来实现
# 如果存在,返回value。
print(dict01["悟空"])
# 如果不存在,报错。
if "沙僧" in dict01: #容错机制
print(dict01["沙僧"])
4. 遍历字典:
for 键名 in 字典名:
字典名[键名]
for 键名,值名 in 字典名.items():
# -- 通过循环
# 获取所有key
for key in dict01: #获取键的时候,什么也不用加,也就是默认是键
print(key)
# 获取所有value
for value in dict01.values():#获取值加.values
print(value)
# 获取所有key--value
# for kv in dict01.items():# 遍历结果是元组(key, value)
# print(kv)
for key,value in dict01.items():#结果是各自获取
print(key)
print(value)
5. 删除元素:
del 字典名[键]
# 删除
if "唐僧" in dict01:
del dict01["唐僧"] #删除键
print(dict01)
字典推导式
1. 定义:
使用简易方法,将可迭代对象转换为字典。
2. 语法:
{键:值 for 变量 in 可迭代对象}
{键:值 for 变量 in 可迭代对象 if 条件}
"""
字典推导式
练习:exercise07
"""
# 需求:range(1,11): key:1--10 value:键的平方
dict01 = {item: item ** 2 for item in range(1, 11)}
# 需求:range(1,11) 的 奇数: key:1--10 value:键的平方
dict01 = {item: item ** 2 for item in range(1, 11) if item % 2 != 0}
字典 VS 列表:
1. 都是可变容器。
2. 获取元素方式不同,列表用索引,字典用键。
3. 字典的插入,删除,修改的速度快于列表。
4. 列表的存储是有序的,字典的存储是无序的。