在本 Python 教程中,您将熟练掌握 Python 字典的所有知识,并附有示例;如何创建字典、如何修改 Python 字典、如何删除以及字典的标准操作。此外,我们还将学习操作字典的方法。
字典是无序且可变的项的集合。字典项通常表示为键值对,用花括号 {} 括起来。每个键值对之间用逗号分隔。简而言之,字典是键值映射,如下图所示。

Python 中的字典可以通过在花括号 {} 中包含逗号分隔的键值对来定义。创建字典的另一种方法是通过内置的 dict() 函数。
<dict_name> = {
<key>:<value>,
<key>:<value>,
.
.
<key>:<value>
}
空字典: 零项的 Python 字典。
emp_dict ={}
print(type(emp_dict))
输出
<class 'dict'>
同质字典: 键是相同不可变数据类型的字典。
int_dict={1:'Odd',2:'Even'}
print(int_dict)
输出
{1: 'Odd', 2: 'Even'}
混合字典: 键是不同不可变数据类型的字典。
mix_dict={1:'Student','name':'Tom','Marks':[45,46,47,48,50 ]}
print(mix_dict)
输出
{1: 'Student', 'name': 'Tom', 'Marks': [45, 46, 47, 48, 50]}
到目前为止,我们已经讨论了各种类型的字典及其创建方法。创建字典的另一种可能方法是使用一个名为 dict() 的函数。
fn_dict = dict({'Name':'John','Age':30})
print(fn_dict)
输出
{'Name': 'John', 'Age': 30}
Python 字典中的两个重要因素是键和值。它们的属性如下。
fn_dict = dict({'Name':'John','Age':30 ,'Name':'Charles'})
print(fn_dict)
输出
{'Name': 'Charles', 'Age': 30}
示例:显示键是列表时出错
D = {['odd']:(1,3,5,7,9)}
print(D)
输出
D = {['odd']:[1,3,5,7,9]}
TypeError: unhashable type: 'list'
D = {'odd':[1,3,5,7,9]}
print(D)
输出
{'odd': [1, 3, 5, 7, 9]}
在 Python 中,包含另一个字典的字典称为嵌套字典。嵌套可以进行到任何级别,没有任何限制。这可以可视化以更好地理解。

University= {
'UN_Name':'Oxford',
'Stud':{ 'St1_Name':'Tom','St2_Name':'Becky' }
}
print(University)
输出
{'UN_Name': 'Oxford', 'Stud': {'St1_Name': 'Tom', 'St2_Name': 'Becky'}}
我们知道字典是 key: value 对的无序集合。尽管它们显示为定义的方式,但在访问时,数值索引不起作用。这是因为 Python 将数值解释为键而不是索引。那么我们如何访问字典中的值呢?
字典使用键从字典中检索值。要访问值,我们使用相同的方括号,其中包含键而不是索引。我们也可以使用 get() 方法来完成相同的操作。
为了理解,让我们检查下面的示例。
mix_dict={1:'Student','name':'Tom','Marks':[45,46,47,48,50 ]}
print('mix_dict[1] = ',mix_dict[1])
print("mix_dict['name'] = ",mix_dict['name'])
print("mix_dict['Marks'] = ", mix_dict.get('Marks')
输出
mix_dict[1] = Student mix_dict['name'] = Tom mix_dict['Marks'] = [45, 46, 47, 48, 50]
现在假设您尝试使用字典中未定义的键来访问值。会发生什么?
显然,结果将是一个异常。如果我们引用字典中不存在的键,解释器会引发 KeyError。只有当我们使用方括号 [] 访问值时才会发生这种情况。get() 方法返回 None 作为输出。
D= { 'A':'Apple','B':'Banana'}
print(D.get('C'))
print(D['C'])
输出
None print(D['C']) KeyError: 'C'
D={
'D1':{2:4,3:9},
'D2':{4:64,5:125}
}
print(D['D1'])
print(D['D2'])
print(D['D1'][3])
print(D['D2'][5])
输出
{2: 4, 3: 9}
{4: 64, 5: 125}
9
125
字典的可变性使得可以通过添加单个或一组条目或替换现有值来修改字典。下面列出了向字典添加条目的三种方法。
向空字典添加单个条目
Student ={}
Student[' First_Name']='Charles'
Student['Last_Name'] = 'Smith'
print("\n Dictionary after adding two entries one at a time :",Student)
输出
Dictionary after adding two entries one at a time :
{' First_Name': 'Charles', 'Last_Name': 'Smith'}
Student = {' First_Name': 'Charles', 'Last_Name': 'Smith'}
Student.update({'ID':10001, 'Department':'Science'})
print("\n Dictionary after adding multiple entries in one shot :", Student)
输出
Dictionary after adding multiple entries in one shot :
{' First_Name': 'Charles', 'Last_Name': 'Smith', 'ID': 10001, 'Department': 'Science'}
Student = {' First_Name': 'Charles', 'Last_Name': 'Smith', 'ID': 10001, 'Department': 'Science'}
Student['Marks'] ={'Physics':100 ,'Chemistry':98}
print("\n Dictionary after nesting : \n ",Student)
输出
Dictionary after nesting :
{' First_Name': 'Charles', 'Last_Name': 'Smith', 'ID': 10001, 'Department': 'Science', 'Marks': {'Physics': 100, 'Chemistry': 98}}
我们还可以通过更改或替换现有值来修改字典。这可以通过引用其键来完成。下面的示例通过引用其键 Last_Name,将现有值 Smith 更改为 David。
我们还可以通过更改或替换现有值来修改字典。这可以通过引用其键来完成。下面的示例通过引用其键 Last_Name,将现有值 Smith 更改为 David。
Student = {' First_Name': 'Charles', 'Last_Name': 'Smith'}
Student['Last_Name']='David'
print(Student)
输出
{' First_Name': 'Charles', 'Last_Name': 'David'}
修改字典的另一种方法是从中删除元素。有多种方法可以删除或删除字典中的元素。它们列在下面。
Student = {' First_Name': 'Charles', 'Last_Name': 'Smith'}
print(Student.pop('Last_Name'))
print("Dictionary after removal is:",Student)
输出
Smith
Dictionary after removal is: {' First_Name': 'Charles'}
Student = {' First_Name': 'Charles', 'Last_Name': 'Smith','Age':27}
print(Student.popitem())
print("Dictionary after removal is:",Student)
输出
('Age', 27)
Student = {' First_Name': 'Charles', 'Last_Name': 'Smith','Age':27}
print(Student.clear())
print("Dictionary after removal is:",Student)
输出
None
Student = {' First_Name': 'Charles', 'Last_Name': 'Smith','Age':27}
del Student['Age']
print("Dictionary after removal is:",Student)
del Student
print("Dictionary after removal is:",Student)
输出
Dictionary after removal is: {' First_Name': 'Charles', 'Last_Name': 'Smith'}
print("Dictionary after removal is:",Student)
NameError: name 'Student' is not defined
与其他数据类型一样,我们可以使用成员运算符来验证字典中是否存在某个键。两个成员运算符是
D ={
0:'Red',
2:'Green',
4:'Blue'
}
print(0 in D)
print(3 not in D)
输出
True True
为了完成一些特定的任务,Python 确实有一些用于字典的内置函数。它们在下面进行了很好的表格化。
| 函数 | 描述 |
|---|---|
| all() | 如果字典中的所有键都为 True,则返回 True |
| any() | 如果字典中的任何键为 True,则返回 True |
| len() | 返回字典中键值对的数量 |
| sorted() | 返回已排序的键列表 |
与函数一样,Python 字典也有用于执行特殊任务和返回特定值的方法。它们在下表中列出。
| 方法 | 描述 |
|---|---|
| clear() | 清空字典中的所有项 |
| copy() | 返回字典的浅拷贝 |
| fromkeys(seq[,v]) | 返回一个新字典,其中包含来自 seq 的键和相关的键值 v。 |
| get(key[,d]) | 返回键的关联值。 |
| items() | 以键值对格式返回列表 |
| keys() | 返回字典中的键列表 |
| pop(key[,d]) | 通过引用键删除字典中的元素 |
| popitem() | 删除并返回最后插入的条目 |
| setdefault(key[,d]) | 如果键不存在,则将键设置为默认值 |
| update() | 返回带有新条目或替换现有条目的更新后的字典。 |
| values() | 返回字典中的值列表 |