想知道如何充分利用 Python 字典吗?在本综合指南中,我们将介绍在学习和实际项目中有效使用字典所需的所有知识。
什么是 Python 字典?
Python 字典是另一种非常有用且重要的数据类型。基本上,Python 字典是数据值的无序集合。但是,与其他数据类型不同,字典的元素是 键值 对,而不是单个数据值。这些对中的每一对都将键映射到相关值。例如,在下面的字典中,我们将欧洲国家(键)映射到它们各自的首都(值)。
与 Python 列表类似, Python 字典 :
- 是 可变和动态的 ,这意味着您可以添加、删除和更改其元素。
- 可以嵌套 ,即一个词典可以包含另一个词典。
与通过索引访问的列表不同,字典元素是通过键访问的。因此, Python 字典键 是 唯一的 ,并且属于 不可变的 数据类型(例如整数、字符串、元组)。同时,字典值可以是任何数据类型,包括列表、元组,甚至其他字典。
如何创建和访问 Python 字典
如果您想创建一个空的 Python 字典,只需要花括号。
如果您要创建包含特定元素的 Python 字典,则需要将键值对括在花括号中。使用冒号 (:) 将键与相应的值分隔开,使用逗号 (,) 将一对键值对与另一对键值对分隔开。
您还可以使用内置函数
dict()
在 Python 中创建新字典。以下是创建 Python 字典的示例:
#Creating Python dictionaries
empty = {}
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
gdp = dict({'indicator':'Nominal GDP', 1:'USA', 2:'China', 3:'Japan'})
print(empty)
print(game_of_thrones)
print(gdp)
{}
{'name': 'Game of Thrones', 'genre': 'fantasy', 'country': 'USA', 'number of seasons': 8}
{'indicator': 'Nominal GDP', 1: 'USA', 2: 'China', 3: 'Japan'}
正如您在上面的例子中看到的,我们根据名义 GDP 对各个国家进行排名,只要满足以下条件,在一个字典中拥有不同数据类型的键是可以的:1)所有键都是唯一的,2)所有键都是不可变的数据类型。
访问 Python 字典中的元素也很简单 - 只需使用关联的键即可。基本上,有两种方法可以访问字典元素:
- 将相应的键括在 方括号 .
-
使用
get() method
如果在字典中找不到键,KeyError
它会返回 None 而不是
让我们看看它是如何工作的。
#Accessing elements of a dictionary with square brackets
capitals = {'Belgium':'Brussels','France':'Paris', 'Germany':'Berlin', 'Italy':'Rome', 'Poland':'Warsaw'}
print(capitals['Belgium'])
print(capitals['Portugal'])
Brussels
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)in()
2 capitals = {'Belgium':'Brussels','France':'Paris', 'Germany':'Berlin', 'Italy':'Rome', 'Poland':'Warsaw'}
3 print(capitals['Belgium'])
----> 4 print(capitals['Portugal'])
KeyError: 'Portugal
#Accessing elements of a dictionary with the (get) method
capitals = {'Belgium':'Brussels','France':'Paris', 'Germany':'Berlin', 'Italy':'Rome', 'Poland':'Warsaw'}
print(capitals.get('Belgium'))
print(capitals.get('Portugal'))
Brussels
None
正如预期的那样,当字典中存在相应的键时,使用方括号内的键可以完美地工作,但如果缺少该键,则会返回错误。该
get()
方法在两种情况下都可以正常工作。
如何编辑 Python 字典
正如我们已经讨论过的,Python 字典是可变且动态的。因此,您可以更新字典元素、添加新元素或删除现有元素。
要 更新字典元素 ,只需通过使用关联键引用该元素并为该元素分配新值。
#Updating dictionary
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':7}
game_of_thrones['number of seasons'] = 8
print(game_of_thrones)
{'name': 'Game of Thrones', 'genre': 'fantasy', 'country': 'USA', 'number of seasons': 8}
通过简单地为相应的键分配一个新值,将 《权力的游戏》 的季节数从“7”更新
在 Python 中, 添加新条目 也相当容易。你只需要为新键定义一个值。看下面的例子。通过添加相应的键值对,我们添加了“ 权力的游戏 ”系列最初是用英语创作的信息。
#Adding elements
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
game_of_thrones['language'] = 'English'
print(game_of_thrones)
{'name': 'Game of Thrones', 'genre': 'fantasy', 'country': 'USA', 'number of seasons': 8, 'language': 'English'}
此外,您可以使用该方法用另一个字典的元素更新一个 Python 字典
update()
。
#Merging dictionaries
game_of_thrones_1 = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
game_of_thrones_2 = {'name':'Game of Thrones', 'genre':'serial drama', 'composer':'Ramin Djawadi', 'year':2011}
game_of_thrones_1.update(game_of_thrones_2)
print(game_of_thrones_1)
{'name': 'Game of Thrones', 'genre': 'serial drama', 'country': 'USA', 'number of seasons': 8, 'composer': 'Ramin Djawadi', 'year': 2011}
从示例中可以看出,我们基本上
将一个 Python 字典附加到另一个
字典中。但是,请注意,如果两个字典中存在相同的键值对,则不会
重复
(即名称 - “
权力的游戏
”)。如果相同键的值不同,则更新后的字典将包含字典中的值
second
(即
类型 - “幻想”
将变为
类型 - “连续剧”
)。
要
字典中的
某些元素
del
关键字和与要删除的值关联的键。请参阅以下示例中我们如何删除类型信息:
#Removing elements
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8, 'language':'English'}
print(game_of_thrones)
del game_of_thrones['genre']
print(game_of_thrones)
{'name': 'Game of Thrones', 'country': 'USA', 'number of seasons': 8, 'language': 'English'}
如果要删除整个字典,基本上有两个选择:删除字典的所有元素或删除字典本身。要删除字典的元素,请使用方法
clear()
。要删除整个字典,请使用关键字
del
。
#Removing all elements
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
game_of_thrones.clear()
print(game_of_thrones)
{}
#Deleting the entire dictionary
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
del game_of_thrones
print(game_of_thrones)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)in()
2 game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
3 del game_of_thrones
----> 4 print(game_of_thrones)
NameError: name 'game_of_thrones' is not defined
请注意,如果您删除了字典中的所有元素,它仍然可用(但为空)。但是,当您选择使用关键字删除整个字典时
del
,该字典将不再存在;如果您尝试访问它,则会收到错误。
更多内置 Python 字典方法
最后,让我们了解一下 Python 其他一些非常有用的内置字典方法:
-
items()
返回包含键值对的元组列表。 -
keys()
返回字典中所有键的列表。 -
values()
返回字典中所有值的列表。
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
print('Items:', list(game_of_thrones.items()))
print('Keys:',list(game_of_thrones.keys()))
print('Values:',list(game_of_thrones.values()))
Items: [('name', 'Game of Thrones'), ('genre', 'fantasy'), ('country', 'USA'), ('number of seasons', 8)]
Keys: ['name', 'genre', 'country', 'number of seasons']
Values: ['Game of Thrones', 'fantasy', 'USA', 8]
从技术上讲,上述方法返回的是
视图对象
,而不是列表。但是,您可以使用该函数轻松地将这些对象转换为列表
list()
。
-
pop()
从字典中删除一个键并返回其值。 -
popitem()
删除一个随机键值对(在 3.7 之前的 Python 版本中)或最后插入字典的项目(在更高版本中)并将该项目作为元组返回。
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
game_of_thrones.pop('country')
'USA'
game_of_thrones.popitem()
('number of seasons', 8)
print(game_of_thrones)
{'name': 'Game of Thrones', 'genre': 'fantasy'}
和
pop()
从字典中删除两个键值对
popitem()
。
-
copy()
返回字典的浅表副本。
#Creating a copy of a dictionary
empty = {}
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
copy_game_of_thrones = game_of_thrones.copy()
print('New copy;', copy_game_of_thrones)
game_of_thrones = {'name':'Game of Thrones', 'genre':'fantasy', 'country':'USA', 'number of seasons':8}
练习 Python 字典
现在您已经了解了 Python 字典的基础知识,现在是时候练习了!
参加 的 Python 基础知识:第 2 部分 课程,学习如何高效使用 Python 字典。通过数十个交互式练习,您将学习如何:
- 访问、添加和删除 Python 字典的元素。
- 使用 IN 运算符。
-
、 和
keys()
,values()
迭代字典items()
. - 在函数中使用字典。
感谢阅读,祝您学习愉快!
发表评论 取消回复