Dictionary(字典)
-
字典(dictionary)是 Python 中另一个非常有用的内置数据类型。
-
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
-
字典是一种映射类型,字典用大括号 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
-
键(key)必须使用不可变类型,如数字、字符串、元组。
-
在同一个字典中,键(key)必须是唯一的;如果一个 key 出现两次,后面的赋值会覆盖掉前面的。
-
字典可以存储任意类型的对象。
-
字典的多个键值对之间用逗号分隔。
-
根据键获取对应的值。
# 定义一个字典:字典是一个无序的键值对的集合
dict1 = {"name":"jack", "age":22, "gender":"男"}
print(dict1) # 输出字典中所有的数据
print(dict1["name"]) # 通过键获取对应的值
输出结果:
-
字典的元素是可以修改的。
# 定义一个字典:字典是一个无序的键值对的集合
dict1 = {"name":"jack", "age":22, "gender":"男"}
dict1["age"] = 33 # 根据键修改对应的值
dict1["birth"] = 19990101 # 向字典中添加元素
print(dict1)
del dict1["gender"] # 删除字典中的元素
print(dict1)
输出结果:
Python 中字典(Dictionary)的内置方法:
1、dict.clear():用于清空字典中所有的数据;
2、dict.copy():复制字典,返回一个复制后的新字典;
3、dict.keys():获取所有的 key,返回的是一个可迭代对象,可以使用 list() 方法来转换为列表;
4、dict.values():获取所有的 value,返回的也是一个可迭代对象,可以使用 list() 方法来转换为列表;
# 定义一个字典:字典是一个无序的键值对的集合
dict1 = {"name":"jack", "age":22, "gender":"男"}
print(dict1.keys()) # 获取所有的 key
print(dict1.values()) # 获取所有的 value
print(dict1.copy()) # 复制字典
dict1.clear() # 清空字典
print(dict1)
输出结果:
5、dict.fromkeys(seq[, value]):用于创建一个新字典,以序列 seq 中的元素做字典的键,value 为所有键对应的初始值,如果没有指定 value 参数,那么所有键的值默认为 None;
seq = ('name', 'age', 'gender')
dict1 = dict.fromkeys(seq) # 根据键创建新的字典
print(dict1)
dict2 = dict.fromkeys(seq, 10) # 创建新字典时指定初始值
print(dict2)
输出结果:
6、dict.get(key, default=None):根据指定的键,获取对应的值;如果键不在字典中,则返回 default 表示的默认值;
dict1 = {"name":"jack", "age":22, "gender":"男"}
print(dict1.get("name")) # 根据键获取对应的值
print(dict1.get("birth", "20000202")) # 如果键不在字典中,则返回默认值 "20000202"
输出结果:
7、dict.setdefault(key, default=None):和 get() 方法类似,如果 key 在字典中,返回 key 对应的值;如果 key 不在字典中,则添加 key,并将值设置为 default 表示的默认值,然后返回 default;
dict1 = {"name":"jack", "age":22, "gender":"男"}
# 如果 key 在字典中,则返回 key 的值
print(dict1.setdefault("name"))
print(dict1)
# 如果 key 不在字典中,添加 key,并未 key 指定 default 值
print(dict1.setdefault("birth", "20000202"))
print(dict1)
输出结果:
8、dict.items():该方法返回一个列表,列表的元素为键值表示的元组;
dict1 = {"name":"jack", "age":22, "gender":"男"}
print(dict1.items())
输出结果:
9、dict.update(dict2):把 dict2 里面的 键值对 更新到 dict 中;如果 dict2 中的 key 和 dict 中的 key 相同,则将 dict 中 key 的值更新为 dict2 中该 key 的值;如果 dict2 中的 key 在 dict 中不存在,则将 key/value 添加到 dict 中;该方法没有返回值;
dict1 = {"name":"jack", "age":22}
dict2 = {"gender":"男"}
dict3 = {"name":"lucy", "gender":"女"}
# 如果 dict2 中的 key 在 dict1 中不存在,则将 dict2 中的 key/value 添加到 dict1 中
dict1.update(dict2)
print(dict1)
# 如果 dict2 中的 key 在 dict1 中存在,则将 dict1 中该 key 的值更新为 dict2 中该 key 的值
dict1.update(dict3)
print(dict1)
输出结果:
10、dict.pop(key[, default]):根据给定的键删除对应的键值对数据,返回键对应的值;如果 key 在字典中不存在,则返回 default 值;
dict1 = {"name":"jack", "age":22, "gender":"男"}
# 根据给定的键,删除对应的键值对数据,返回键对应的值
print(dict1.pop("name"))
print(dict1)
# 如果给定的键在字典中不存在,则返回 default 表示的值
print(dict1.pop("birth", "20200101"))
输出结果:
11、dict.popitem():删除字典中的最后一对键值对,并返回该键值对;
dict1 = {"name":"jack", "age":22, "gender":"男"}
print(dict1.popitem()) # 删除最后一对键值对,并返回该键值对
print(dict1)
print(dict1.popitem())
print(dict1)
print(dict1.popitem())
print(dict1)
输出结果: