想知道如何充分利用 Python 字典吗?在本综合指南中,我们将介绍在学习和实际项目中有效使用字典所需的所有知识。

什么是 Python 字典?

Python 字典是另一种非常有用且重要的数据类型。基本上,Python 字典是数据值的无序集合。但是,与其他数据类型不同,字典的元素是 键值 对,而不是单个数据值。这些对中的每一对都将键映射到相关值。例如,在下面的字典中,我们将欧洲国家(键)映射到它们各自的首都(值)。

python dictionary.jpg

与 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 字典中的元素也很简单 - 只需使用关联的键即可。基本上,有两种方法可以访问字典元素:

  1. 将相应的键括在 方括号 .
  2. 使用 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() .
  • 在函数中使用字典。

感谢阅读,祝您学习愉快!

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部