Python入门教程第41篇 字典

Posted 不剪发的Tony老师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python入门教程第41篇 字典相关的知识,希望对你有一定的参考价值。

本篇我们将会学习 Python 中的字典(Dictionary)数据类型,它可以用于组织多个相关的信息。

字典类型

Python 字典是由多个键值对(key-value)组成的集合,每一个 key 和一个 value 相关联。

键值对中的 value 可以是数字、字符串、列表、元组或者其他的字典。实际上,它可以是任何有效的数据类型。

键值对中的 key 必须是不可变对象。也就是说,它不能被改变,具体包括数字、字符串、元组等。

Python 使用大括号()定义字段对象。在大括号内部,我们可以指定零个、一个或者多个键值对。以下示例定义了一个空的字典:

empty_dict = 

一般来说,我们会在循环语句之前定义一个空字典,然后在循环内部为其增加键值对。

如果想要查看字典对象的类型,可以使用 type() 函数:

empty_dict = 

print(type(empty_dict))

输出结果如下:

<class 'dict'>

以下示例定义了一个新的字典对象,它包含了一些键值对:

person = 
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True

字典 person 包含了 5 个键值对,分别代表了名字、姓氏、年龄、喜欢的颜色以及活动状态。

访问字典值

如果想要通过 key 访问字典中的 value,可以使用方括号标识或者 get() 方法。

使用方括号标识

如果想要访问 key 关联的 value,可以将其放入方括号内:

dict[key]

以下代码演示了如何访问字典 person 中 first_name 和 last_name 关联的值:

person = 
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True

print(person['first_name'])
print(person['last_name'])

输出结果如下:

John
Doe

使用 get() 方法

如果我们试图访问不存在的 key,将会返回一个错误信息。例如:

person = 
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True


ssn = person['ssn']

错误信息如下:

Traceback (most recent call last):
  File "dictionary.py", line 15, in <module>
    ssn = person['ssn']
KeyError: 'ssn'

为了避免这种错误,我们可以使用字典的 get() 方法:

person = 
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True


ssn = person.get('ssn')
print(ssn)

输出结果如下:

None

如果 key 不存在, get() 方法将会返回 None,而不是 KeyError 错误。其中,None 表示不存在值,或者空值。

get() 方法也可以通过第二个参数指定一个默认值,当 key 不存在时返回这个默认值。例如,以下示例返回了默认的字符串“000-00-0000”:

person = 
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True


ssn = person.get('ssn', '000-00-0000')
print(ssn)

输出结果如下:

000-00-0000

增加键值对

字典是一种动态结构,我们可以随时增加新的键值对。

增加键值对时,我们需要指定字典的名称,并且在方括号中指定新的 key,然后指定 value。以下示例为字典 person 增加了一个新的键值对:

person['gender'] = 'Famale'

修改键值对中的值

如果想要修改某个 key 对应的 value,我们需要指定字典的名称,并且在方括号中指定 key,然后给出新的 value。

dict[key] = new_value

以下示例修改了字典 person 中 age 对应的值:

person = 
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True


person['age'] = 26

print(person)

输出结果如下:

'first_name': 'John', 'last_name': 'Doe', 'age': 26, 'favorite_colors': ['blue', 'green'], 'active': True

删除键值对

使用 del 语句删除字典中的键值对:

del dict[key]

以上语法中,我们需要指定字典的名称以及 key。

以下示例删除了字典 person 中的 active 键:

person = 
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True


del person['active']
print(person)

输出结果如下:

'first_name': 'John', 'last_name': 'Doe', 'age': 25, 'favorite_colors': ['blue', 'green']

字典遍历

如果想要查看字典中的内容,可以使用 for 循环遍历它的键值对、key或者 value。

从 Python 3.7 开始,当我们遍历字典时,键值对将会按照插入时的顺序返回。

遍历所有的键值对

Python 字典提供了一个 items() 方法,可以返回一个包含键值对列表的对象,类似于一个元组构成的列表。例如:

person = 
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True


print(person.items())

输出结果如下:

dict_items([('first_name', 'John'), ('last_name', 'Doe'), ('age', 25), ('favorite_colors', ['blue', 'green']), ('active', True)])

如果想要遍历字典中的键值对,可以使用一个 for 循环,指定两个代表键和值的变量,用于解包列表中的元组:

person = 
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True


for key, value in person.items():
    print(f"key: value")

输出结果如下:

first_name: John
last_name: Doe
age: 25
favorite_colors: ['blue', 'green']
active: True

for 循环中的变量名可以自定义,并不一定需要叫做 key 和 value。

遍历所有的键

有时候我们只需要遍历字典中的键,这种情况下可以使用 for 循环加上 keys() 方法。keys() 方法用于返回一个包含字典键的对象。例如:

person = 
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True


for key in person.keys():
    print(key)

输出结果如下:

first_name
last_name
age
favorite_colors
active

实际上,遍历所有键是遍历字典的默认行为。因此,我们可以省略 keys() 方法。以下代码的输出结果和上面的示例相同:

person = 
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True


for key in person:
    print(key)

遍历所有的值

字典的 values() 方法可以返回一个包含全部值的列表。使用 for 循环加上 values() 方法可以遍历字典中的全部值:

person = 
    'first_name': 'John',
    'last_name': 'Doe',
    'age': 25,
    'favorite_colors': ['blue', 'green'],
    'active': True


for value in person.values():
    print(value)

输出结果如下:

John
Doe
25
['blue', 'green']
True

总结

  • Python 字典是一个键值对的集合,每个键都有一个关联的值。
  • 使用方括号或者 get() 方法访问字典中的值。
  • 使用 del 语句删除字典中的键值对。
  • 使用 for 循环遍历字典的键、值或者键值对。

以上是关于Python入门教程第41篇 字典的主要内容,如果未能解决你的问题,请参考以下文章

8. 这篇博客,把python从数值到模块到字典到元组,真python入门复习教程通览

Python入门教程第43篇 集合

Python_实用入门篇_11

选择第二个单词(姓氏)的第一个字符

Python入门篇之字符串字典集合

Python代码阅读(第19篇):合并多个字典