10 个有用的 Python 字典方法

你想学习如何使用Python字典吗?本教程将介绍Python字典方法,以便读取、修改和执行其他常见操作。

我们将从回顾Python字典的基础知识开始,然后创建一个示例字典并使用Python字典方法对其进行修改。

让我们开始吧…

Python字典概述

Dictionaries 是Python中的内置数据结构。它允许你以键值对的形式存储项目,定义键和值之间的关联或映射。

字典中的键应该是唯一的(这样它们才能是hashable)。你可以使用键来查找值,或者使用内置方法(稍后会学到)。

创建Python字典时,你可以初始化所有的键值对,或者初始化一个空字典,然后添加键值对。

>>> dict1 = {'language':'Python','like':True}
>>> type(dict1)


# 或者我们可以这样做:

>>> dict1 = {}
>>> dict1['language']='Python'
>>> dict1['like']=True

常见操作的Python字典方法

注意:要运行代码示例,您需要安装Python 3.7或更高版本。

您可以在Python REPL中编写代码,或在Geekflare的online Python editor中进行跟随。

>>> person = {'name':'Alice',
...           'city':'Portland',
...           'interest':'Programming',
...           'profession':'Developer'
...           }

现在我们已经初始化了一个Python字典,让我们开始了解各种字典方法。

使用keys()方法获取字典的键

在处理Python字典时,常见的操作之一是访问所有键、值和键值对。要获取字典的键,可以调用keys()方法,如下所示:

>>> person.keys()
dict_keys(['name', 'city', 'interest', 'profession'])

使用values()方法获取字典的值

values()方法返回所有值,在你希望进一步处理这些值时非常有用。

让我们访问person字典中的所有值:

>>> person.values()
dict_values(['Alice', 'Portland', 'Programming', 'Developer'])

使用items()方法获取键值对

items()方法返回一个键值对元组的列表。因此,在person字典上调用此方法将返回一个键值对元组的列表:

>>> person.items()
dict_items([('name', 'Alice'), ('city', 'Portland'), ('interest', 'Programming'), 
           ('profession', 'Developer')])

使用copy()方法获取浅拷贝

copy()方法返回Python字典的浅拷贝

>>> person_cpy = person.copy()

这里,person_cpyperson字典的浅拷贝。让我们通过将“name”键更新为“Bob”来修改此副本。

>>> person_cpy['name'] = 'Bob'
>>> person_cpy

现在,如果你检查字典的内容,你会发现“name”已经更新为“Bob”。

{
 'name': 'Bob', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer'
}

然而,原始的person字典没有被修改。

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer'
}

使用setdefault()方法设置默认值

使用Python字典时,如果字典中不存在该键,通常会遇到KeyError异常。以下是一个示例,当我们尝试访问'age'键时:

>>> person['age']
Traceback (most recent call last):
  File "", line 1, in 
KeyError: 'age'

您可以通过使用内置的setdefault()get()方法来避免此类错误,而不是像上面那样直接访问值。

setdefault(key)方法返回dict['key'],如果键在dict中存在。

>>> person.setdefault('name')
'Alice'

当键不存在时,它会将键添加到字典中,并使用默认值None

>>> person.setdefault('address')
>>> person

在这里,'address'键在person字典中不存在。但是我们可以看到它已经添加了默认值None

{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': None 
}

现在我们可以将'address'键设置为某个地址:

>>> person['address'] = "10, xyz street"
>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street' 
}

您还可以在方法调用中指定值,例如:

>>> person.setdefault('country','USA')
'USA'
>>> person

由于'country'键最初在person字典中不存在,我们可以看到它已经添加了值'USA'。

{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

使用get()获取特定值

get()方法返回与键关联的值。它还可选地接受另一个默认值,如果键在字典中不存在,则返回该值。

当我们尝试访问'name'键的值时,由于该键存在于person中,我们得到了'Alice':

>>> person.get('name')
'Alice'

person字典没有'gpa'键。因此,当我们尝试获取其值时,在Python REPL中不会得到任何结果。但是,如果您打印出该值,您将得到None

>>> person.get('gpa')
>>> print(person.get('gpa'))
None

但是,如果您提供可选的默认值,我们将得到该值,而不是None

>>> person.get('gpa','not found')
'not found'

但是,get()方法不会将'gpa'键添加到字典中。

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

理解setdefault()和get()的区别

虽然setdefault()get()方法都可以用于处理KeyError,但是让我们总结一下我们所学到的区别:

  • dict.setdefault(key,val) 方法将 key 添加到字典中,并将 val 设置为默认值。如果没有提供 val,则将 key 添加到字典中并设置默认值为 None
  • dict.get(key,val) 方法从Python字典中返回与键对应的值。如果键不存在,则返回 val(如果提供)或者返回 None,但是不会将 key 添加到字典中。

您也可以使用 defaultdict in Python 来更好地处理KeyErrors。

使用update()方法更新字典内容

您可以使用另一个字典中的键值对来更新现有的Python字典。您还可以使用 update() 方法使用任何Python可迭代对象的内容来更新字典。

让我们定义一个 more_details 字典。然后使用 more_details 字典的内容更新 person 字典:

>>> more_details = {'hobby':'singing', 'likes':'sweets'}
>>> person.update(more_details)

从下面的输出中,我们可以看到 ‘hobby' 和 ‘likes' 键已被添加到 person 字典中。

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA', 
 'hobby': 'singing', 
 'likes': 'sweets'
}

使用popitem()方法删除最后添加的项

可以使用 popitem() 字典方法来删除最后添加的键值对。

>>> person.popitem()
('likes', 'sweets')

如上所示,调用 person 字典的 popitem() 方法返回('likes','sweets')键值对——字典中最后添加的项。

它还会删除键值对。您可以通过检查字典的内容来确认这一点:

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA', 
 'hobby': 'singing'
}

使用pop()方法删除字典项

我们知道 popitem() 字典方法会删除并返回Python字典中最后一个键值对。然而,有时我们可能需要删除其他项——而不仅仅是最后添加的键值对。

为了做到这一点,我们可以使用Python字典方法 pop():在字典上使用 .pop(key) 返回与 key 对应的值,并从字典中删除键值对。

这是一个示例:

>>> person.pop('hobby')
'singing'

由于我们弹出了与键 ‘hobby' 对应的项,因此可以看到它不再存在于字典中。

>>> person
{
 'name': 'Alice', 
 'city': 'Portland', 
 'interest': 'Programming', 
 'profession': 'Developer', 
 'address': '10, xyz street', 
 'country': 'USA'
}

如果传入一个不存在的键,我们会遇到 KeyError 异常,如下所示:

>>> person.pop('age')
Traceback (most recent call last):
  File "", line 1, in 
KeyError: 'age'

在这里,由于 person 字典中不存在键 ‘age',我们遇到了 KeyError 异常。

与默认情况下删除最后一项的 list pop() method 不同,字典的 pop() 方法 需要 一个键。如果在方法中未指定键,则会出现错误。

>>> person.pop()
跟踪(最近的调用最先发生):
文件“”,第1行,
类型错误:pop预期至少1个参数,但获取了0个

使用clear()方法删除所有字典项

字典的pop()和popitem()方法每次删除一个键值对。如果你想删除字典中的所有项,可以使用clear()方法。

>>> person.clear()
>>> person
{}

如上所示,调用clear()方法后,person字典中的所有键值对都被删除,person字典现在为空。

Python字典方法总结

这里是我们学到的Python字典方法的快速回顾。

方法 语法 描述
keys() dict1.keys() 返回dict1的键
values() dict1.values() 返回dict1的值
items() dict1.items() 返回dict1中所有键值对的列表
copy() dict1.copy() 返回dict1的浅拷贝
setdefault() dict1.setdefault(key, default_value) – 将key及可选的default_value添加为dict1的键(当未指定时,默认值为None)
– 如果key已经在dict1中存在,则返回dict1[key]
get() dict1.get(key,default_value) – 如果key在dict1中存在,则返回dict1[key]– 如果key不在dict1中,并且未指定default_value,则返回None
update() dict1.update(iterable1) 用iterable1中的键值对更新dict1
popitem() dict1.popitem() 从dict1中移除并返回最后一个键值对
pop() dict1.pop(key) – 移除并返回与key对应的值:dict1[key]– 如果key不在dict1中,会引发KeyError
clear() dict1.clear() 删除dict1中的所有项

总结

你已经学会了如何使用常见的方法在Python字典上执行读取、更新和删除操作。此外,你还学会了如何使用get()方法和setdefault()方法来处理KeyError异常,通过返回默认值和向Python字典添加一个带有默认值的条目来处理。你还可以通过键或值对字典进行排序。

接下来,查看有用的链接列表。祝编码愉快!

类似文章