Python 字典


2021年8月23日, Learn eTutorial
2092

在本 Python 教程中,您将熟练掌握 Python 字典的所有知识,并附有示例;如何创建字典、如何修改 Python 字典、如何删除以及字典的标准操作。此外,我们还将学习操作字典的方法。

字典是无序且可变的项的集合。字典项通常表示为键值对,用花括号 {} 括起来。每个键值对之间用逗号分隔。简而言之,字典是键值映射,如下图所示。

Mapping

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() 的函数。

示例:dict() 函数

fn_dict = dict({'Name':'John','Age':30})
print(fn_dict)

 

输出


{'Name': 'John', 'Age': 30}

字典中键值对的属性

Python 字典中的两个重要因素是键和值。它们的属性如下。

  1. 键必须是唯一的,这意味着不应有重复。如果字典包含重复的键,则最后一个赋值将被考虑。

    示例:说明键不存储重复项

    
    fn_dict = dict({'Name':'John','Age':30 ,'Name':'Charles'})
    print(fn_dict)
     
    

    输出

    
    {'Name': 'Charles', 'Age': 30}
    
  2. 键是不可变的,这意味着它们在创建后在其生命周期内是不可更改的。键可以是整数、字符串、元组,但绝不能是列表。

    示例:显示键是列表时出错

    
    D = {['odd']:(1,3,5,7,9)}
    print(D)
     
    

    输出

    
    D = {['odd']:[1,3,5,7,9]}
    TypeError: unhashable type: 'list'
    
  3. 值没有限制,它们可以是任何数据类型,也可以是任何长度。

    示例:显示值可以是任何类型和任何长度

    
    D = {'odd':[1,3,5,7,9]}
    print(D)
     
    

    输出

    {'odd': [1, 3, 5, 7, 9]}
    

什么是 Python 中的嵌套字典?

在 Python 中,包含另一个字典的字典称为嵌套字典。嵌套可以进行到任何级别,没有任何限制。这可以可视化以更好地理解。

Nested Dictionary

嵌套字典

University= {
 'UN_Name':'Oxford',
 'Stud':{   'St1_Name':'Tom','St2_Name':'Becky' }
}
print(University) 

输出

{'UN_Name': 'Oxford', 'Stud': {'St1_Name': 'Tom', 'St2_Name': 'Becky'}}

如何在 Python 中访问字典值?

我们知道字典是 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 作为输出。

访问未定义键时的 KeyError


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

如何修改 Python 集合

字典的可变性使得可以通过添加单个或一组条目或替换现有值来修改字典。下面列出了向字典添加条目的三种方法。

  1. 向空字典添加单个条目

    示例:如何向空集合添加元素

    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'}
    
  2. update() 函数:一次性向字典添加多个条目

    示例:如何一次性添加多个元素

    
    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'}
    
  3. 通过添加另一个字典来嵌套字典

    示例:将字典添加到现有字典

    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'}

如何在 Python 字典中删除元素

修改字典的另一种方法是从中删除元素。有多种方法可以删除或删除字典中的元素。它们列在下面。

  1. pop() 方法:是字典中的一个内置函数。它用于通过引用键从字典中删除一个单独的项,并且此方法返回被删除的值。

    示例:使用 pop() 方法从字典中删除元素

    
    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'}
    
  2. popitem() 方法:是用于从字典中删除最后插入的键值对的内置函数,它将返回键值对。

    示例:使用 popitem() 方法从字典中删除元素

    
    Student = {' First_Name': 'Charles', 'Last_Name': 'Smith','Age':27}
    print(Student.popitem())
    print("Dictionary after removal is:",Student)
     
    

    输出

    
    ('Age', 27)
    
  3. clear() 方法:是用于删除或清除字典中所有元素的内置函数。

    示例:使用 clear() 方法删除元素

    
    Student = {' First_Name': 'Charles', 'Last_Name': 'Smith','Age':27}
    print(Student.clear())
    print("Dictionary after removal is:",Student)
     
    

    输出

    None
    
  4. del 关键字: 可用于删除单个元素或整个字典本身。

    示例:使用 del 关键字删除元素

    
    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
    

如何在 Python 字典中执行成员资格验证

与其他数据类型一样,我们可以使用成员运算符来验证字典中是否存在某个键。两个成员运算符是

  • in:仅当键存在于字典中时才返回 true。
  • not in:当键不在字典中时返回 false。

示例:成员资格验证


D ={
   0:'Red',
   2:'Green',
   4:'Blue'
   }
print(0 in D)
print(3 not in D)
 

输出

True
True

Python 字典内置函数

为了完成一些特定的任务,Python 确实有一些用于字典的内置函数。它们在下面进行了很好的表格化。

函数 描述
all() 如果字典中的所有键都为 True,则返回 True
any()  如果字典中的任何键为 True,则返回 True
len() 返回字典中键值对的数量
sorted() 返回已排序的键列表

Python 字典方法

与函数一样,Python 字典也有用于执行特殊任务和返回特定值的方法。它们在下表中列出。

方法 描述
clear() 清空字典中的所有项
copy() 返回字典的浅拷贝
fromkeys(seq[,v]) 返回一个新字典,其中包含来自 seq 的键和相关的键值 v。
get(key[,d]) 返回键的关联值。
items() 以键值对格式返回列表
keys() 返回字典中的键列表
pop(key[,d]) 通过引用键删除字典中的元素
popitem() 删除并返回最后插入的条目
setdefault(key[,d]) 如果键不存在,则将键设置为默认值
update() 返回带有新条目或替换现有条目的更新后的字典。
values() 返回字典中的值列表