一、字典(dict)概念
字典是另一种可变容器模型,且可存储任意类型对象如字符串、数字、元组等其他容器模型,因为字典是无序的所以不支持索引和切片。
二、字典(dict)的定义
一般格式:
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示
d = {key1 : value1, key2 : value2, key3 : value3 }
例子
dict_data = {'name': '王华', 'age': 23, 'sex': '男', '班级': '计算机一班'}
结果如下:
:::info
注意:dict 作为Python的关键字和内置函数,变量名不建议命名为 dict 。
:::
空字典:
格式:字典名={ } 或者 字典名= dict{ }
# 使用大括号{}来创建空字典
dict_data = {}
# 打印字典
print(dict_data)
# 查看字典类型
print(type(dict_data))
以上代码输出结果为:
{}
<class 'dict'>
注意:
在使用 dict() 创建字典时,在小括号 () 内要以 key=value 的形式编写。
- key不可以重复,否则只会保留第一个;
- value值可以重复;
- key可以是任意的数据类型,但不能出现可变的数据类型,保证key唯一;
- key一般形式为字符串。
三、字典的特性
dict()是Python内置的一个数据类型,也被称为字典或映射,它是一个无序的键值对集合。每个键(key)必须是唯一的,而值(value)可以是任意的Python对象。下面是dict()的一些主要特性:
1.键值对集合
一个dict()是由一系列键值对组成的无序集合,其中每个键对应一个唯一的值。下面是一个简单的例子:
# 创建一个字典
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
print(my_dict)
# 打印结果如下
{'apple': 2, 'banana': 3, 'orange': 4}
2.可变性
dict()是可变的对象,这意味着可以添加、删除或修改它的键值对。下面是一个例子:
# 修改字典中的值
my_dict['apple'] = 5
# 打印结果如下
{'apple': 5, 'banana': 3, 'orange': 4}
3.键的唯一性
dict()中的每个键必须是唯一的。如果试图将一个已经存在的键再次添加到dict()中,将会覆盖该键对应的原值。下面是一个例子:
# 添加一个新的键值对
my_dict['pear'] = 1
# 尝试将一个已经存在的键再次添加到字典中
my_dict['apple'] = 6
# 打印结果如下
{'apple': 6, 'banana': 3, 'orange': 4, 'pear': 1}
4.值的任意性
dict()中的值可以是任意Python对象,包括其他的dict()、列表、元组、数字、字符串等。下面是一个例子:
# 字典中的值可以是列表
my_dict['fruits'] = ['apple', 'banana', 'orange']
# 字典中的值可以是字典
my_dict['colors'] = {'apple': 'red', 'banana': 'yellow', 'orange': 'orange'}
# 输出结果如下
'fruits': ['apple', 'banana', 'orange'],
'colors': {'apple': 'red', 'banana': 'yellow', 'orange': 'orange'}}
5.字典的长度
len()函数可以用于获取字典中键值对的数量。下面是一个例子:
# 获取字典中键值对的数量
print(len(my_dict))
# 输出结果如下
6
6.键的类型
键可以是任意可哈希(hashable)的对象,例如数字、字符串、元组等。不过,列表和字典这样的可变对象是不能作为键的。下面是一个例子:
# 使用元组作为键
my_dict[('apple', 'red')] = 2
# 尝试使用列表作为键
# my_dict[['apple', 'red']] = 2 # 会报错
7.字典的迭代
可以使用for循环迭代字典的键、值或键值对。下面是一个例子:
# 迭代字典的键
for key in my_dict:
print(key)
# 迭代字典的值
for value in my_dict.values():
print(value)
# 迭代字典的键值对
for key, value in
四、字典的内置函数
Python中的字典(dict())有一些内置的函数可以用于操作和处理字典:
1.len():返回字典中键值对的数量。
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
length = len(my_dict)
print(length) # 输出:3
2.keys():返回字典中所有的键。
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
keys = my_dict.keys()
print(keys) # 输出:dict_keys(['apple', 'banana', 'orange'])
3.values():返回字典中所有的值
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
values = my_dict.values()
print(values) # 输出:dict_values([2, 3, 4])
4.items():返回字典中所有的键值对。
# 此方法也是字典转列表
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
items = my_dict.items()
print(items) # 输出:dict_items([('apple', 2), ('banana', 3), ('orange', 4)])
5.clear():清空字典中所有的键值对。
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
my_dict.clear()
print(my_dict) # 输出:{}
6.copy():返回字典的浅拷贝(只拷贝顶层对象)。
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
new_dict = my_dict.copy()
print(new_dict) # 输出:{'apple': 2, 'banana': 3, 'orange': 4}
7.pop(key[, default]):删除并返回字典中指定键的值,如果键不存在,返回指定的默认值(默认为None)。
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
value = my_dict.pop('apple')
print(value) # 输出:2
print(my_dict) # 输出:{'banana': 3, 'orange': 4}
value = my_dict.pop('pear', 0)
print(value) # 输出:0
8.popitem():随机删除并返回字典中的一个键值对。
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
item = my_dict.popitem()
print(item) # 输出:('orange', 4)
print(my_dict) # 输出:{'apple': 2, 'banana': 3}
9.update(other_dict):用另一个字典中的键值对更新当前字典,如果存在相同的键,则覆盖当前字典中的值。
# 语法
my_dict.update(other_dict)
# 示例
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
new_dict = {'pear': 1, 'banana': 5}
my_dict.update(new_dict)
print(my_dict) # 输出:{'apple': 2, 'banana': 5, 'orange': 4, 'pear': 1}
10.删除字典del
可以使用 **del **关键字删除一个字典或字典中的键值对。
# 删除整个字典,只需使用 del 加上字典的名称
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
del my_dict # 删除整个字典
# 删除字典中的某个键值对,需要使用 del 加上字典中需要删除的键
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
del my_dict['banana'] # 删除键为 'banana' 的键值对
注意:需要注意的是,del 关键字删除的是变量本身,而不是其指向的对象。因此,如果有其他变量也指向同一个字典对象,那么删除其中一个变量后,其他变量仍然可以访问该字典对象
例如:
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
other_dict = my_dict
del my_dict # 删除 my_dict 变量
print(other_dict) # 输出:{'apple': 2, 'banana': 3, 'orange': 4}
11.str()函数
str() 函数将字典对象转换成一个字符串,字符串的格式为 {key1: value1, key2: value2, …}
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
my_str = str(my_dict)
print(my_str) # 输出:{'apple': 2, 'banana': 3, 'orange': 4}
举例:列表(list)转字典(dict)
my_list = [('apple', 2), ('banana', 3), ('orange', 4)]
my_dict = dict(my_list)
print(my_dict) # 输出:{'apple': 2, 'banana': 3, 'orange': 4}
五、字典的三种取值方式
在Python中,字典(dict())有三种取值方式:
my_list = [('apple', 2), ('banana', 3), ('orange', 4)]
my_dict = dict(my_list)
print(my_dict) # 输出:{'apple': 2, 'banana': 3, 'orange': 4}
1.通过键获取值
可以通过字典的键获取对应的值,用法如下:
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
value = my_dict['apple']
print(value) # 输出:2
2.使用get()方法获取值
也可以使用get()方法获取字典中对应键的值,如果键不存在,返回指定的默认值(默认为None),用法如下:
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
value = my_dict.get('apple')
print(value) # 输出:2
value = my_dict.get('pear', 0)
print(value) # 输出:0
3.遍历字典获取键和值
可以遍历字典获取每个键和对应的值,用法如下:
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
for key, value in my_dict.items():
print(key, value)
# 输出:
# apple 2
# banana 3
# orange 4
4.注意
需要注意的是,如果尝试通过不存在的键获取值,会触发KeyError异常。因此,在获取字典中的值时,最好先判断键是否存在,可以使用in关键字或**keys()**方法来实现,例如:
my_dict = {'apple': 2, 'banana': 3, 'orange': 4}
if 'apple' in my_dict:
print(my_dict['apple']) # 输出:2
if 'pear' not in my_dict.keys():
print('pear is not in the dict')