mapping 对象会将 hashable 值映射到任意对象。 映射属于可变对象。 目前仅有一种标准映射类型 字典。 (关于其他容器对象请参看 list, set 与 tuple 等内置类,以及 collections 模块。)
字典的键 几乎 可以为任何值。 不是 hashable 的值,即包含列表、字典或其他可变类型(按值比较而非按对象标识比较)的值不可被用作键。 比较结果相等的值(如 1, 1.0 和 True 等)可被互换使用以索引同一个字典条目。
前言
在 Python 中,dict 是一种数据结构,也称为字典(Dictionary),用于存储键值对(key-value pairs)的集合。字典是一种可变的、无序的、以键为索引的集合,其中每个键必须是唯一的,但值则不必唯一。
一、dict是什么?
在 Python 中,dict 是一种数据结构,也称为字典(Dictionary),用于存储键值对(key-value pairs)的集合。字典是一种可变的、无序的、以键为索引的集合,其中每个键必须是唯一的,但值则不必唯一。
字典的特点包括:
无序性:字典中的键值对没有固定的顺序,不像列表或元组有顺序。
键的唯一性:字典中的键必须是唯一的,如果重复赋值给同一个键,则会覆盖原来的值。
可变性:字典是可变的,可以修改、添加或删除键值对。
二、使用步骤
1.基本操作(增删查改)
代码如下(示例):
创建字典
dict1 = {'name': 'Alice', 'age': 25, 'city': 'Beijing'} #创建空字典 dict2 = {} print(dict2)
访问字典元素
print(dict1['name']) # 输出:Alice
修改字典元素
dict1['age'] = 26 print(dict1['age']) # 输出:26
添加字典元素
dict1['gender'] = 'female' print(dict1) # 输出:{'name': 'Alice', 'age': 26, 'city': 'Beijing', 'gender': 'female'}
删除字典元素
del dict1['city'] print(dict1) # 输出:{'name': 'Alice', 'age': 26, 'gender': 'female'}、
判断字典是否为空
if not dict1: print('字典为空') # 输出:字典为空 else: print('字典不为空') # 输出:字典不为空
遍历字典
for key in dict1: print(key, ':', dict1[key]) # 输出:name : Alice、age : 26、gender : female for k,v in dict1.items(): print(k, ':', v) # 输出:name : Alice、age : 26、gender : female #dict()使用方法,里面的参数是2元组或者函数的参数 dict3 = dict(name='Bob', age=30, city='Shanghai') print(dict3) # 输出:{'name': 'Bob', 'age': 30, 'city': 'Shanghai'} list1 = [('name', 'Tom'), ('age', 35), ('city', 'Guangzhou')] dict4 = dict(list1) print(dict4) # 输出:{'name': 'Tom', 'age': 35, 'city': 'Guangzhou'}
2.常用方法
字典的常用方法
1.clear():清空字典
python dict1 = {'name': 'Alice', 'age': 25, 'city': 'Beijing'} dict1.clear() print(dict1) # 输出:{}
2.copy():复制字典
dict1= {'name': 'Alice', 'age': 25, 'city': 'Beijing'} dict2 = dict1.copy() print(dict2) # 输出:{'name': 'Alice', 'age': 25, 'city': 'Beijing'}
3.fromkeys():创建指定键的字典,是一个类方法,参数为序列或迭代器,默认参数是None
dict.fromkeys(['name', 'age', 'city'], 'unknown') # 输出:{'name': 'unknown', 'age': 'unknown', 'city': 'unknown'} d=dict.fromkeys(range(3)) print("d=",d)#输出:d= {0: None, 1: None, 2: None}
4.get():获取指定键的值
dict1 = {'name': 'Alice', 'age': 25, 'city': 'Beijing'} print(dict1.get('name')) # 输出:Alice print(dict1.get('gender', 'unknown')) # 输出:unknown,不存在返回默认值,没有默认值返回None
5.items():以列表返回可遍历的(键, 值) 元组数组
6.keys():以列表返回字典所有的键
7.values():以列表返回字典所有的值
dict1 = {'name': 'Alice', 'age': 25, 'city': 'Beijing'} print(dict1.items()) # 输出:dict_items([('name', 'Alice'), ('age', 25), ('city', 'Beijing')]) print(dict1.keys()) # 输出:dict_keys(['name', 'age', 'city']) print(dict1.values()) # 输出:dict_values(['Alice', 25, 'Beijing'])
8.pop():删除指定键的值,并返回该值
```python dict1 = {'name': 'Alice', 'age': 25, 'city': 'Beijing'} print(dict1.pop('name')) # 输出:Alice print(dict1) # 输出:{'age': 25, 'city': 'Beijing'}
9.popitem():随机删除一个键-值对,并返回该键-值对
dict1 = {'name': 'Alice', 'age': 25, 'city': 'Beijing'} print(dict1.popitem()) # 输出:('city', 'Beijing') print(dict1) # 输出:{'name': 'Alice', 'age': 25}
10.setdefault():设置默认值
dict1 = {'name': 'Alice', 'age': 25, 'city': 'Beijing'} print(dict1.setdefault('gender', 'unknown')) # 输出:unknown print(dict1) # 输出:{'name': 'Alice', 'age': 25, 'city': 'Beijing', 'gend`er': 'unknown'}`
11.update():更新字典
dict1 = {'name': 'Alice', 'age': 25, 'city': 'Beijing'} dict2 = {'gender': 'female'} dict1.update(dict2) print(dict1) # 输出:{'name': 'Alice', 'age': 25, 'city': 'Beijing', 'gender': 'female'}
12.并集运算符 |
dict1 = {'name': 'Alice', 'age': 25, 'city': 'Beijing'} dict2 = {'gender': 'female'} dict3 = dict1 | dict2 print(dict3) # 输出:{'name': 'Alice', 'age': 25, 'city': 'Beijing', 'gender': 'female'}
总结
字典的键必须是不可变对象,如字符串、数字、元组等,而值则可以是任意对象。
字典是一种可变容器,可以随时添加、删除或修改元素。
字典的键是通过哈希算法计算出来的,所以字典的查找速度非常快。
字典是一种映射类型,它的元素是键-值对。
字典的创建格式是{key1:value1, key2:value2,…, keyn:valuen}。
字典的键必须是不可变对象,而值可以是任意对象。
字典的键必须是唯一的,不能重复。
字典的键不能改变,但可以重新赋值。