Python序列的应用(八):元组、字典

前言:在Python编程语言中,序列是一种非常重要的数据结构,它允许我们存储和操作有序的数据集合。在前几期的内容中,我们已经探讨了列表(List)和集合(Set)这两种序列的应用,它们各自具有独特的特性和用途。列表以其灵活性和可变性而闻名,而集合则以其无序性和唯一性而受到青睐。今天,我们将深入探讨Python中的另外两种序列类型:元组(Tuple)和字典(Dictionary)。

元组和字典都是Python中不可或缺的数据结构,它们在不同的场景下有着广泛的应用。元组以其不可变性和高效性而受到青睐,尤其适合用于保护数据不被修改的情况。字典则以其键值对的结构和快速查找能力而闻名,是存储和管理关联数据的理想选择。

在这篇文章中,我们将详细介绍元组和字典的创建、操作和应用,包括:

  1. 元组的创建和删除:如何创建元组,以及如何删除整个元组或其元素。
  2. 访问元组元素:如何通过索引访问元组中的元素。
  3. 修改元组元素:为什么元组是不可变的,以及如何处理需要修改元组的场景。
  4. 元组推导式:如何使用元组推导式来创建元组。
  5. 字典的创建和删除:如何创建字典,以及如何删除整个字典或其元素。
  6. 通过键值对访问字典:如何通过键来访问字典中的值。
  7. 遍历字典:如何遍历字典的键、值或键值对。
  8. 添加、修改和删除字典元素:如何对字典进行增删改操作。
  9. 字典推导式:如何使用字典推导式来创建字典。

通过这篇文章,你将能够更深入地理解元组和字典的工作原理,以及如何在实际编程中有效地使用它们。无论是处理固定不变的数据集,还是管理复杂的关联数据,元组和字典都能提供强大的支持。让我们开始今天的探索之旅吧!

一、元组

Python 中的元组(Tuple)是一种数据结构,用于存储不同的值(可以是数字、字符串、对象等)。元组与列表(List)类似,但元组是不可变的,这意味着一旦元组被创建,你就不能添加、删除或改变它的元素。元组的这种不可变性使得它们在某些情况下比列表更安全,因为它们不能被意外地修改。

以下是关于Python元组的一些基本特性和操作:

1、创建元组:

元组可以通过将一系列值用逗号分隔来创建,或者使用圆括号来明确表示这是一个元组。

# 使用逗号分隔
my_tuple = 1, 2, 3
print(my_tuple)  # 输出:(1, 2, 3)

# 使用圆括号
my_tuple = (1, 2, 3)
print(my_tuple)  # 输出:(1, 2, 3)

2、元组的删除

由于元组是不可变的,你不能删除元组中的单个元素,但可以删除整个元组或者清空整个元组。

my_tuple = (1, 2, 3)
del my_tuple  # 删除整个元组
# my_tuple[0] = 4  # 尝试修改元素会抛出TypeError

# 清空元组
my_tuple = ()
print(my_tuple)  # 输出:()

3、 访问元组元素:

可以通过索引来访问元组中的元素,索引从0开始。

my_tuple = (1, 2, 3)
print(my_tuple[0])  # 输出:1

4、元组的不可变性:

由于元组是不可变的,你不能修改元组中的元素。尝试修改将会导致错误。

my_tuple = (1, 2, 3)
# my_tuple[0] = 4  # 这会抛出TypeError

5、元组的切片:

可以对元组进行切片操作,但结果仍然是一个新的元组。

my_tuple = (1, 2, 3, 4, 5)
print(my_tuple[1:3])  # 输出:(2, 3)

6、元组的连接:

可以使用加号(+)来连接两个元组,但结果是一个新的元组。

tuple1 = (1, 2)
tuple2 = (3, 4)
print(tuple1 + tuple2)  # 输出:(1, 2, 3, 4)

7、元组的解包:

可以同时赋值多个变量,这称为元组的解包。

my_tuple = (1, 2, 3)
a, b, c = my_tuple
print(a, b, c)  # 输出:1 2 3

8、元组的方法:

元组有一些内置的方法,如 count()index()
在Python中,count()index() 是列表(List)和元组(Tuple)等序列类型提供的内置方法,它们用于执行特定的操作:

① count() 方法:

  • count() 方法用于统计某个元素在序列中出现的次数,并返回这个计数。
  • 它接受一个参数,即你想要计数的元素。
  • 如果元素在序列中不存在,则返回0。
  • 示例:
    my_list = [1, 2, 2, 3, 2, 4]
    count_of_two = my_list.count(2)  # 返回元素2出现的次数
    print(count_of_two)  # 输出:3
    

② index() 方法:

  • index() 方法用于从序列中找出某个元素第一次出现的索引位置,并返回这个索引。
  • 它接受一个参数,即你想要查找索引的元素。
  • 如果元素在序列中不存在,则抛出一个 ValueError 异常。
  • 可以有可选的参数,用于指定搜索的起始和结束位置。
  • 示例:
    my_list = [1, 2, 3, 2, 4]
    index_of_two = my_list.index(2)  # 返回元素2第一次出现的索引
    print(index_of_two)  # 输出:1
    
    如果列表中有多个相同的元素,index() 只会返回第一个元素的索引。

这两个方法在处理列表和元组时非常有用,尤其是在需要对元素进行计数或者查找元素位置时。

9、元组与列表的转换:

元组可以被转换成列表,反之亦然,因为列表是可变的。

my_tuple = (1, 2, 3)
my_list = list(my_tuple)  # 将元组转换为列表
print(my_list)  # 输出:[1, 2, 3]

my_list = [1, 2, 3]
my_tuple = tuple(my_list)  # 将列表转换为元组
print(my_tuple)  # 输出:(1, 2, 3)

10、元组推导式

元组推导式类似于列表推导式,但是使用圆括号而不是方括号。

my_tuple = tuple(i * 2 for i in range(5))
print(my_tuple)  # 输出:(0, 2, 4, 6, 8)

### 11、元组和列表的区别
1. **可变性**:
   - 列表是可变的,可以添加、删除或更改元素。
   - 元组是不可变的,一旦创建就不能更改。

2. **性能**:
   - 由于元组的不可变性,它们通常比列表有更小的内存开销,并且在某些情况下执行速度更快。

3. **用途**:
   - 列表通常用于存储需要动态改变大小的数据集合。
   - 元组通常用于保护数据不被改变,并且可以作为字典的键,而列表则不能。

4. **方法**:
   - 列表有更多的方法,比如 `append()`, `extend()`, `remove()`, `pop()` 等,因为它们需要支持元素的添加和删除。
   - 元组的方法较少,主要是 `count()` 和 `index()`。

5. **语法**:
   - 创建列表时使用方括号 `[]`。
   - 创建元组时使用圆括号 `()`,或者逗号分隔。

元组在Python中非常有用,特别是在需要确保数据不被改变的情况下,比如作为字典的键或者函数的返回值。

### 实例训练20 -使用元组保存咖啡馆里提供的咖啡名称

coffeename = ('蓝山','卡布奇诺','摩卡','曼特宁','麝香猫','哥伦比亚') #定义元组
print(coffeename) #输出元组

![](https://img2024.cnblogs.com/blog/3426651/202412/3426651-20241214100727709-642900042.png)

 ### 实例训练21 -使用for循环列出咖啡馆里提供的咖啡名称

coffeename = ('蓝山','卡布奇诺','摩卡','曼特宁','麝香猫','哥伦比亚') #定义元组
print("您好,欢迎光临 ~ 伊米咖啡馆 ~\n\n我店有: \n")
for name in coffeename: #遍历元组
print(name + "咖啡",end= " ")

![](https://img2024.cnblogs.com/blog/3426651/202412/3426651-20241214102535595-1822594802.png)
 ### 实例训练22 -分两列显示某赛季NBA西部联盟前八名球队

print("某赛季NBA西部联盟前八名\n")
team = ("火箭","勇士","开拓者","雷霆","爵士","鹈鹕","马刺","森林狼")
for index,item in enumerate(team):
if index%2 == 0: #判断是否为偶数,为偶数时不换行
print(item +"\t\t",end='')
else:
print(item + "\n") #换行输出

![](https://img2024.cnblogs.com/blog/3426651/202412/3426651-20241214110120012-846870189.png)
### 实例训练23 -将麝香猫咖啡替换为拿铁咖啡

coffeename = ('蓝山','卡布奇诺','摩卡','曼特宁','麝香猫','哥伦比亚') #定义元组
coffeename[4] = '拿铁' #将"麝香猫",替换为"拿铁"
print(coffeename)

![](https://img2024.cnblogs.com/blog/3426651/202412/3426651-20241214110602778-1644122603.png)
### 注意:通过这个实验就可以看出元组是无法直接修改的,需要修改得重新赋值,如:

coffeename = ('蓝山','卡布奇诺','摩卡','曼特宁','麝香猫','哥伦比亚') #定义元组
coffeename = ('蓝山','卡布奇诺','摩卡','曼特宁','拿铁','哥伦比亚') #定义元组
print(coffeename)


### 二、字典
Python中的字典(Dictionary)是一种内置的数据结构,它存储键值对(key-value pairs)。字典中的每个键都与一个值相关联,且键必须是唯一的。以下是关于Python字典的一些基本操作:

### 1、字典的创建和删除

### ① 创建字典:
- 字典可以通过花括号 `{}` 或者 `dict()` 函数来创建。
- 键值对用冒号 `:` 分隔,键值对之间用逗号分隔。

```python
# 使用花括号创建
my_dict = {'name': 'Alice', 'age': 25}

# 使用dict()函数创建
my_dict = dict(name='Alice', age=25)

# 空字典
empty_dict = {}

② 删除字典:

  • 可以使用 del 语句或者 clear() 方法来删除整个字典。
  • 也可以使用 pop()popitem() 方法来删除字典中的单个元素。
# 删除整个字典
del my_dict

# 清空字典
my_dict = {'a': 1, 'b': 2}
my_dict.clear()  # 清空字典后,my_dict 变为 {}

# 删除单个键值对
my_dict = {'a': 1, 'b': 2}
my_dict.pop('a')  # 删除键 'a' 及其对应的值,返回值 1
my_dict.popitem()  # 删除并返回一个键值对,字典变为 {}

实例训练24 -创建一个保存女神星座的字典

name = ['绮梦','冷伊一','香凝','黛兰']         #作为键的列表
sign = ['水瓶座','射手座','双鱼座','双子座']    #作为值的列表
dictionary = dict(zip(name,sign))             #转换为字典
print(dictionary)                             #输出转换后字典

2、通过键值对访问字典

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

my_dict = {'name': 'Alice', 'age': 25}
print(my_dict['name'])  # 输出:Alice

如果尝试访问不存在的键,会抛出 KeyError。为了避免这个错误,可以使用 get() 方法,它允许你设置一个默认值。

print(my_dict.get('name', 'Default Name'))  # 输出:Alice
print(my_dict.get('gender', 'Default Gender'))  # 输出:Default Gender

3、遍历字典

可以遍历字典的键、值或键值对。

my_dict = {'name': 'Alice', 'age': 25}

# 遍历键
for key in my_dict:
    print(key)

# 遍历值
for value in my_dict.values():
    print(value)

# 遍历键值对
for key, value in my_dict.items():
    print(key, value)

4、添加、修改和删除字典元素

① 添加元素:

  • 直接赋值即可添加新的键值对。
dictionary = dict((('绮梦','水瓶座'),('冷伊一','射手座'),('香凝','双鱼座'),('黛兰','双子座')))
dictionary["碧绮"] = "巨蟹座"             #添加一个元素
print(dictionary)

② 修改元素:

  • 如果键已存在,赋值会更新其对应的值。
dictionary = dict((('绮梦','水瓶座'),('冷伊一','射手座'),('香凝','双鱼座'),('黛兰','双子座')))
dictionary["香凝"] = "天蝎座"             #添加一个元素,当元素存在时,则相当于修改功能
print(dictionary)

③ 删除元素:

  • 使用 del 语句、pop()popitem() 方法删除元素。
dictionary = dict((('绮梦','水瓶座'),('冷伊一','射手座'),('香凝','双鱼座'),('黛兰','双子座')))
del dictionary["香凝"]            #删除一个元素
print(dictionary)

当删除一个不存在的键时,会报错异常:

dictionary = dict((('绮梦','水瓶座'),('冷伊一','射手座'),('香凝','双鱼座'),('黛兰','双子座')))
del dictionary["香凝2"]            #删除一个元素
print(dictionary)


避免这个异常,可以做一下修改:

dictionary = dict((('绮梦','水瓶座'),('冷伊一','射手座'),('香凝','双鱼座'),('黛兰','双子座')))
if "香凝2" in dictionary:          #如果存在
    del dictionary["香凝2"]        #删除一个元素
print(dictionary)

5、字典推导式

字典推导式提供了一种优雅的方式来创建字典。

# 创建一个平方数字典
squares = {x: x**2 for x in range(6)}
print(squares)  # 输出:{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

字典推导式可以包含条件语句:

# 创建一个只包含偶数的平方数字典
even_squares = {x: x**2 for x in range(6) if x % 2 == 0}
print(even_squares)  # 输出:{0: 0, 2: 4, 4: 16}

实例训练25 -应用字典推导式实现根据名字和星座创建一个字典

name = ['绮梦','冷伊一','香凝','黛兰']                        #作为键的列表
sign = ['水瓶','射手','双鱼','双子']                          #作为值的列表
dictionary = {i:j+'座' for i,j in zip(name,sign)}            #使用列表推导式生成字典
print(dictionary)                                            #输出转换后字典

以上就是Python字典的基本操作,包括创建、删除、访问、遍历、修改以及使用字典推导式。字典是Python中非常强大和灵活的数据结构,适用于各种场景。

posted @ 2024-12-14 12:08  Linux运维技术栈  阅读(21)  评论(0编辑  收藏  举报