字典 dict
什么是字典:
1. 字典是一种可变的容器,可以存储任意类型的数据
2. 字典中的每个数据都是用"键"(key) 进行索引的,而不象序列,可以用整数下标进行索引
3. 字典的数据没有先后关系,字典的存储是无序的
4. 字典中的数据是以键-值(key-value)对 的形式进行存储的
5. 字典的键不能重复,且只能用不可变类型作为字典的键
字典的字面值表示方法:
以大括号,花括号{} 括起来, 以冒号(:) 分隔键-值对, 各键值对之间用逗号分隔开
创建空字典:
d = {} # d绑定空字典
创建非空字典:
d = {"name": "weimingze", "age": 35}
d = {True: "真值", False: "假值"}
d = {"class1": ["老魏", "张某某", "李某某"]}
d = {(2008, 8, 8): "北京奥运会纪念日"}
d = {"a": 1, "b": 2, "a": 1.1}
字典的值可以为任意类型:
bool, str, int, float, complex, tuple, list, dict ,以及后面要学到的 集合,函数,类对象....
示例:
d = {'a': tuple(range(10))}
dict 的构造(创建)函数
dict() 生成一个空的字典,等同于 {}
dict(iterable) 用可迭代对象初始化一个字典
dict(**kwargs) 关键字参数形式生成一个字典
示例:
d = dict()
d = dict([("name", "weimingze"), ("age", 35)])
# 关键字传参生成一个字典
d = dict(name="weimingze", age=35)
L = [(1, 2), (3, 4), 'AB', [5, 6]]
d = dict(L) # {1: 2, 3: 4, 5: 6, 'A': 'B'}
可变类型(不能充当字典的键):
列表,字典,集合set,字节数组(bytearray,后面会讲)
字典的访问:
字典的键索引
用[]访问字典内的成员
语法:
字典[键]
示例:
d = {"name": 'tarena', 'age': 20}
print("姓名:", d['name'], "年龄:", d['age'])
字典的特点:
添加,删除,查找速度快
添加和修改元素
字典[键] = 值
示例:
d = {}
d["name"] = "tarena" # 创建新的键值对
d['age'] = 20 # 创建新的键值对
d['age'] = 21 # 修改age键所对应的值
说明:
字典的键索引赋值时:
1. 键不存在,创建键,并绑定键对应的值
2. 键存在,修改键绑定的值
del 语句
可以用来删除字典的键-值对
语法:
del 字典[键]
示例:
d = {"name": "tarena", "age": 20}
del d['age']
in /not in运算符:
1. 可以用in运算符来判断一个键是否存在于字典中,如果存在则返回True, 否则返回False
2. not in 与 in 的返回值相反
示例:
d = {"name": "tarena", "age": 20}
"name" in d # 返回True
20 in d # 返回False
字典的迭代访问:
字典是可迭代对象, 字典只能对键进行迭代
示例:
d = {"name": "tarena", "age": 20}
for x in d:
print(x)
可以用于字典的内建(built-in)函数:
len(x) 返回键值对的个数
max(x) 返回键的最大值
min(x) 返回键的最小值
sum(x) 返回键的和
any(x) 真值测试,只对键测试
all(x) 真值测试,对键测试
字典的方法(method)
D代表字典对象
D.clear() 清空字典
D.pop(key) 移除键,同时返回此键所对应的值的引用关系
D.copy() 返回字典D的副本,只复制一层(浅拷贝)
D.update(D2)将字典D2合并在D中,如果键相同,则此键的值取D2的值作为新值
D.get(key, default) 返回键key所对应的值,如果没有此键,则返回default
D.keys() 返回可迭代的dict_keys集合对象
D.values() 返回可迭代对dict_values值对象
D.items() 返回可迭代的dict_items对象
示例:
d = {1: "one", 2: "two", 3: "three"}
for x in d:
print(x) # 键值对元组
字典推导式 dict comprehesion
作用:
用可迭代对象生成一个新的字典
语法:
{键表达式 : 值表达式
for 变量列表 in 可迭代对象 [if 真值表达式]}
注:
[] 的内容代表可省略
示例:
# 生成一个字典, 键为数值(1~10), 值为数字的平方
d = {x : x**2 for x in range(1, 11)}
L = ["tarena", "xiaozhang", "xiaowei"]
# 字符串作为键,字符串长度作为值:
d = {x : len(x) for x in L}
字典推导式嵌套
嵌套方式与列表推导式相同
语法:
{键表达式 : 值表达式
for 变量列表 in 可迭代对象 [if 真值表达式]
for 变量列表 in 可迭代对象 [if 真值表达式]
}
什么是字典:
1. 字典是一种可变的容器,可以存储任意类型的数据
2. 字典中的每个数据都是用"键"(key) 进行索引的,而不象序列,可以用整数下标进行索引
3. 字典的数据没有先后关系,字典的存储是无序的
4. 字典中的数据是以键-值(key-value)对 的形式进行存储的
5. 字典的键不能重复,且只能用不可变类型作为字典的键
字典的字面值表示方法:
以大括号,花括号{} 括起来, 以冒号(:) 分隔键-值对, 各键值对之间用逗号分隔开
创建空字典:
d = {} # d绑定空字典
创建非空字典:
d = {"name": "weimingze", "age": 35}
d = {True: "真值", False: "假值"}
d = {"class1": ["老魏", "张某某", "李某某"]}
d = {(2008, 8, 8): "北京奥运会纪念日"}
d = {"a": 1, "b": 2, "a": 1.1}
字典的值可以为任意类型:
bool, str, int, float, complex, tuple, list, dict ,以及后面要学到的 集合,函数,类对象....
示例:
d = {'a': tuple(range(10))}
dict 的构造(创建)函数
dict() 生成一个空的字典,等同于 {}
dict(iterable) 用可迭代对象初始化一个字典
dict(**kwargs) 关键字参数形式生成一个字典
示例:
d = dict()
d = dict([("name", "weimingze"), ("age", 35)])
# 关键字传参生成一个字典
d = dict(name="weimingze", age=35)
L = [(1, 2), (3, 4), 'AB', [5, 6]]
d = dict(L) # {1: 2, 3: 4, 5: 6, 'A': 'B'}
可变类型(不能充当字典的键):
列表,字典,集合set,字节数组(bytearray,后面会讲)
字典的访问:
字典的键索引
用[]访问字典内的成员
语法:
字典[键]
示例:
d = {"name": 'tarena', 'age': 20}
print("姓名:", d['name'], "年龄:", d['age'])
字典的特点:
添加,删除,查找速度快
添加和修改元素
字典[键] = 值
示例:
d = {}
d["name"] = "tarena" # 创建新的键值对
d['age'] = 20 # 创建新的键值对
d['age'] = 21 # 修改age键所对应的值
说明:
字典的键索引赋值时:
1. 键不存在,创建键,并绑定键对应的值
2. 键存在,修改键绑定的值
del 语句
可以用来删除字典的键-值对
语法:
del 字典[键]
示例:
d = {"name": "tarena", "age": 20}
del d['age']
in /not in运算符:
1. 可以用in运算符来判断一个键是否存在于字典中,如果存在则返回True, 否则返回False
2. not in 与 in 的返回值相反
示例:
d = {"name": "tarena", "age": 20}
"name" in d # 返回True
20 in d # 返回False
字典的迭代访问:
字典是可迭代对象, 字典只能对键进行迭代
示例:
d = {"name": "tarena", "age": 20}
for x in d:
print(x)
可以用于字典的内建(built-in)函数:
len(x) 返回键值对的个数
max(x) 返回键的最大值
min(x) 返回键的最小值
sum(x) 返回键的和
any(x) 真值测试,只对键测试
all(x) 真值测试,对键测试
字典的方法(method)
D代表字典对象
D.clear() 清空字典
D.pop(key) 移除键,同时返回此键所对应的值的引用关系
D.copy() 返回字典D的副本,只复制一层(浅拷贝)
D.update(D2)将字典D2合并在D中,如果键相同,则此键的值取D2的值作为新值
D.get(key, default) 返回键key所对应的值,如果没有此键,则返回default
D.keys() 返回可迭代的dict_keys集合对象
D.values() 返回可迭代对dict_values值对象
D.items() 返回可迭代的dict_items对象
示例:
d = {1: "one", 2: "two", 3: "three"}
for x in d:
print(x) # 键值对元组
字典推导式 dict comprehesion
作用:
用可迭代对象生成一个新的字典
语法:
{键表达式 : 值表达式
for 变量列表 in 可迭代对象 [if 真值表达式]}
注:
[] 的内容代表可省略
示例:
# 生成一个字典, 键为数值(1~10), 值为数字的平方
d = {x : x**2 for x in range(1, 11)}
L = ["tarena", "xiaozhang", "xiaowei"]
# 字符串作为键,字符串长度作为值:
d = {x : len(x) for x in L}
字典推导式嵌套
嵌套方式与列表推导式相同
语法:
{键表达式 : 值表达式
for 变量列表 in 可迭代对象 [if 真值表达式]
for 变量列表 in 可迭代对象 [if 真值表达式]
}