【深度学习】 Python 和 NumPy 系列教程(六):Python容器:4、字典Dictionary详解(初始化、访问元素、常用操作、常用函数、遍历、解析)

2024-07-29 21:17:57 浏览数 (1)

一、前言

Python是一种高级编程语言,由Guido van Rossum于1991年创建。它以简洁、易读的语法而闻名,并且具有强大的功能和广泛的应用领域。Python具有丰富的标准库和第三方库,可以用于开发各种类型的应用程序,包括Web开发、数据分析、人工智能、科学计算、自动化脚本等。

Python本身是一种伟大的通用编程语言,在一些流行的库(numpy,scipy,matplotlib)的帮助下,成为了科学计算的强大环境。本系列将介绍Python编程语言和使用Python进行科学计算的方法,主要包含以下内容:

  • Python:基本数据类型、容器(列表、元组、集合、字典)、函数、类
  • Numpy:数组、数组索引、数据类型、数组数学、广播
  • Matplotlib:绘图,子图,图像
  • IPython:创建笔记本,典型工作流程

二、实验环境

Python 3.7

运行下述命令检查Python版本

代码语言:javascript复制
 python --version 

三、Python容器(Containers)

0、 容器介绍

Python中的容器是用于存储和组织数据的对象。常见的容器包括列表(List)、元组(Tuple)、集合(Set)和字典(Dictionary)。

  • 列表是有序的可变容器,可以包含不同类型的元素,使用方括号([])来创建。
代码语言:javascript复制
my_list = [1, 2, 3, 'a', 'b', 'c']
  • 元组是有序的不可变容器,也可以包含不同类型的元素,使用圆括号(())来创建。
代码语言:javascript复制
my_tuple = (1, 2, 3, 'a', 'b', 'c')
  • 集合是无序且不重复的容器,用于存储唯一的元素,使用大括号({})或者set()函数来创建。
代码语言:javascript复制
my_set = {1, 2, 3, 'a', 'b', 'c'}
  • 字典是无序的键值对容器,用于存储具有唯一键的值,使用花括号({})或者dict()函数来创建。
代码语言:javascript复制
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}

这些容器都提供了不同的方法和操作,用于对数据进行存储、访问和处理。可以根据具体的需求选择适合的容器类型。

1、列表(List)

【深度学习】 Python 和 NumPy 系列教程(三):Python容器:1、列表List详解(初始化、索引、切片、更新、删除、常用函数、拆包、遍历)_QomolangmaH的博客-CSDN博客

https://blog.csdn.net/m0_63834988/article/details/132768246?spm=1001.2014.3001.5501

2、元组(Tuple)

【深度学习】 Python 和 NumPy 系列教程(四):Python容器:2、元组tuple详解(初始化、索引和切片、元组特性、常用操作、拆包、遍历)_QomolangmaH的博客-CSDN博客

https://blog.csdn.net/m0_63834988/article/details/132777307?spm=1001.2014.3001.5501

3、集合(Set)

【深度学习】 Python 和 NumPy 系列教程(五):Python容器:3、集合Set详解(初始化、访问元素、常用操作、常用函数)_QomolangmaH的博客-CSDN博客

https://blog.csdn.net/m0_63834988/article/details/132779181?spm=1001.2014.3001.5502

4、字典(Dictionary)

0. 基本概念

字典(Dictionary)是一种可变的、无序的键值对集合。字典中的元素由键(key)和对应的值(value)组成,每个键和值之间使用冒号(:)进行分隔,整个键值对使用逗号(,)进行分隔,并且整个字典被包含在花括号({})中。

  • 键值对 (key, value):键是数据索引的扩展。
    • 键:不可变数据类型
      • ­数字(整数/浮点数)、字符串、元组等
    • 值:任意数据类型
  • 基本模式:{<键1>:<值1>, <键2>:<值2>, … , <键n>:<值n>}
1. 初始化

a. 使用{}创建字典

使用花括号({})来创建一个空字典,或者使用键值对的形式来初始化一个非空字典。

代码语言:javascript复制
# 创建一个空字典
empty_dict = {}

# 创建一个非空字典
student = {"name": "John", "age": 20, "grade": "A"}

b. 使用dict()函数创建字典

dict()函数,可以通过传递键值对的参数或者通过可迭代对象(如元组或列表)来创建字典。

  • 通过参数
代码语言:javascript复制
student = dict(name="John", age=20, grade="A")
  • 通过可迭代对象
代码语言:javascript复制
student_info = [("name", "John"), ("age", 20), ("grade", "A")]
student = dict(student_info)
2. 访问字典元素

a. 使用方括号 []

可以通过键来访问字典中的值。

代码语言:javascript复制
student = {"name": "John", "age": 20, "grade": "A"}

print(student["name"])
print(student["age"])

输出结果为:

代码语言:javascript复制
John
20

b. 使用 get() 方法

get() 方法可以接受一个键作为参数,并返回对应的值。如果键不存在于字典中,get() 方法会返回 None,或者可以提供一个默认值作为 get() 方法的第二个参数,用于在键不存在时返回。

代码语言:javascript复制
student = {"name": "John", "age": 20, "grade": "A"}

print(student.get("name"))
print(student.get("address", "N/A"))

输出结果为:

代码语言:javascript复制
John
N/A
3. 字典常用操作

a. 添加或修改元素

使用赋值语句来添加或修改字典中的元素。

代码语言:javascript复制
student = {"name": "John", "age": 20, "grade": "A"}

student["age"] = 21  # 修改年龄
student["address"] = "123 Main St"  # 添加地址

print(student)

输出结果为:

代码语言:javascript复制
{'name': 'John', 'age': 21, 'grade': 'A', 'address': '123 Main St'}

b. 删除元素

使用del语句或pop()方法来删除字典中的元素。

代码语言:javascript复制
student = {"name": "John", "age": 20, "grade": "A"}

del student["age"]  # 删除年龄
student.pop("grade")  # 删除成绩

print(student)

输出结果为:

代码语言:javascript复制
{'name': 'John'}

c. 判断键是否存在

使用in关键字来判断字典中是否存在指定的键。

代码语言:javascript复制
student = {"name": "John", "age": 20}

print("name" in student)  # True
print("grade" in student)  # False

输出结果为:

代码语言:javascript复制
True
False

d. 字典长度

代码语言:javascript复制
student = {"name": "John", "age": 20, "grade": "A"}
length = len(student)
print(length)  # 输出:3

在上述示例中,我们使用len()函数来获取字典student的长度,然后将结果打印出来。结果为3,表示字典中有3个键值对。

4. 字典常用函数

keys():返回字典中所有键

values():返回字典中所有值

items():返回字典中所有键值对

copy():复制字典

clear():清空字典中的所有元素

代码语言:javascript复制
student = {"name": "John", "age": 20, "grade": "A"}

print(student.keys())
print(student.values())
print(student.items())

student_copy = student.copy()
student.clear()

print(student_copy)
print(student)

输出结果为:

代码语言:javascript复制
dict_keys(['name', 'age', 'grade'])
dict_values(['John', 20, 'A'])
dict_items([('name', 'John'), ('age', 20), ('grade', 'A')])
{'name': 'John', 'age': 20, 'grade': 'A'}
{}
5. 遍历

a. 遍历键(Keys)

可以使用keys()方法获取字典中所有的键,并进行遍历。示例如下:

代码语言:javascript复制
student = {"name": "John", "age": 20, "grade": "A"}

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

输出结果为:

代码语言:javascript复制
name
age
grade

b. 遍历值(Values)

可以使用values()方法获取字典中所有的值,并进行遍历。示例如下:

代码语言:javascript复制
student = {"name": "John", "age": 20, "grade": "A"}

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

输出结果为:

代码语言:javascript复制
John
20
A

c. 遍历键值对(Items)

可以使用items()方法获取字典中所有的键值对,并进行遍历。示例如下:

代码语言:javascript复制
student = {"name": "John", "age": 20, "grade": "A"}

for key, value in student.items():
    print(key, value)

输出结果为:

代码语言:javascript复制
name John
age 20
grade A
6. 字典解析

将for循环和创建新元素的代码合并成一行,使其自动附加新元素。

代码语言:javascript复制
original_dict = {"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}

new_dict = {key: value for key, value in original_dict.items() if value % 2 == 0}

print(new_dict)

输出:

代码语言:javascript复制
{'b': 2, 'd': 4}

0 人点赞