Python基础篇之元组tuple与字典dict用法详解

 更新时间:2026年11月04日 09:06:11   作者:小庄-Python办公  
这篇文章主要为大家详细介绍了Python中元组(tuple)和字典(dict)的核心特性与用法,重点涵盖元组的不可变性、创建规则、解包技巧及其适用场景,适合Python初学者夯实基础

本篇目标

  • 搞懂元组"不可变"到底是什么意思、什么时候用
  • 掌握字典的增删改查与遍历
  • 学会字典推导式与 get() 的安全取值
  • 掌握元组/字典解包的实用技巧

第一部分:元组 tuple

创建元组

t1 = (1, 2, 3)
t2 = 1, 2, 3          # 括号可以省略,但不建议
t3 = ()               # 空元组
t4 = (1,)             # 单元素元组,逗号必须有!
t5 = (1)              # ❌ 这不是元组,就是数字 1

单元素元组的逗号是新手必踩的坑。

元组不可变

t = (1, 2, 3)
t[0] = 100      # ❌ TypeError

但如果元组里有可变元素,那个元素本身可以改:

t = ([1, 2], "hello")
t[0].append(3)
print(t)   # ([1, 2, 3], 'hello')   ← 能改,因为改的是列表

元组支持的操作

t = (1, 2, 3, 2)

len(t)          # 4
t[0]            # 1
t[::-1]         # (2, 3, 2, 1)  切片返回元组
t.count(2)      # 2
t.index(3)      # 2
3 in t          # True
t + (4, 5)      # (1, 2, 3, 2, 4, 5)  拼接生成新元组

元组什么时候用

  1. 数据不应该被修改:如坐标 (x, y)、RGB 颜色 (255, 128, 0)
  2. 作为字典的 key(列表不行)
  3. 函数返回多个值(Python 实际就是返回元组)
  4. 性能略好于列表,遍历稍快

元组解包(超实用)

# 坐标
x, y = (10, 20)

# 交换变量
a, b = b, a

# 函数返回多个值
def get_user():
    return "小庄", 18, "北京"

name, age, city = get_user()

# 用 * 收集剩余
first, *rest = [1, 2, 3, 4]
print(first)   # 1
print(rest)    # [2, 3, 4]

# 只要首尾
head, *_, tail = [1, 2, 3, 4, 5]
print(head, tail)   # 1 5

第二部分:字典 dict

字典是**键值对(key-value)**的无序集合,查询速度极快。

创建字典

user = {"name": "小庄", "age": 18, "city": "北京"}
empty = {}
empty2 = dict()

# 从键值对序列创建
dict([("a", 1), ("b", 2)])     # {'a': 1, 'b': 2}
dict(name="小庄", age=18)       # {'name': '小庄', 'age': 18}

查

user = {"name": "小庄", "age": 18}

user["name"]            # 小庄
user["gender"]          # ❌ KeyError!

user.get("gender")      # None      安全,不会报错
user.get("gender", "未知")  # 未知    带默认值

"name" in user          # True     查 key 是否存在

永远优先用 get(),除非你确定 key 一定存在。

增 / 改

user["gender"] = "男"          # key 不存在 = 新增
user["age"] = 20               # key 存在 = 修改
user.update({"age": 21, "job": "程序员"})   # 批量更新

删

user.pop("city")        # 删除并返回该值
user.pop("xxx", None)   # 不存在时返回 None,不报错
del user["age"]         # 直接删
user.clear()            # 清空

遍历

user = {"name": "小庄", "age": 18, "city": "北京"}

# 遍历 key(默认)
for k in user:
    print(k)

# 遍历 value
for v in user.values():
    print(v)

# 遍历键值对(最常用)
for k, v in user.items():
    print(f"{k}: {v}")

其他常用方法

user.keys()          # 所有 key
user.values()        # 所有 value
user.items()         # 所有键值对
len(user)            # 3
user.setdefault("level", 1)   # 有就返回原值,没有就设置

字典推导式

# 生成平方映射
{i: i**2 for i in range(5)}   # {0:0, 1:1, 2:4, 3:9, 4:16}

# 过滤
{k: v for k, v in user.items() if v}

# 键值互换
{v: k for k, v in d.items()}

# 两个列表合成字典
keys = ["a", "b", "c"]
vals = [1, 2, 3]
dict(zip(keys, vals))          # {'a': 1, 'b': 2, 'c': 3}

实战:统计词频

text = "apple banana apple orange banana apple"
words = text.split()

count = {}
for word in words:
    count[word] = count.get(word, 0) + 1

print(count)   # {'apple': 3, 'banana': 2, 'orange': 1}

Python 标准库给了更简洁的做法:

from collections import Counter
count = Counter(words)
print(count.most_common(2))   # [('apple', 3), ('banana', 2)]

常见坑

坑说明
单元素元组要加逗号(1) 是整数,(1,) 才是元组
d["key"] 不存在会 KeyError用 d.get("key", default)
遍历字典时增删会报错,先 list(d.keys()) 转副本
列表不能做字典 key列表不可哈希,用元组代替
Python 3.7 之前字典无序现在有序,但别依赖顺序做逻辑
# 遍历时删除的正确写法
d = {"a": 1, "b": 2, "c": 3}
for k in list(d.keys()):
    if d[k] < 3:
        d.pop(k)

小结

  • 元组不可变,适合存坐标、配置、做字典 key;解包很方便
  • 字典查改都用 get() 更安全
  • 遍历键值对用 .items()
  • 推导式、zip()、Counter 是统计类任务的利器

练习题

  1. 定义元组存"某商品的名称、单价、库存",用解包取出三个值并打印。
  2. 统计一段英文文本中每个单词出现的次数,输出出现最多的 3 个。
  3. 把两个字典合并(相同 key 的值相加),如 {"a":1,"b":2} + {"b":3,"c":4} → {"a":1,"b":5,"c":4}。

以上就是Python基础篇之元组tuple与字典dict用法详解的详细内容,更多关于Python元组tuple与字典dict的资料请关注脚本之家其它相关文章!

相关文章

  • Python selenium自动化测试模型图解

    Python selenium自动化测试模型图解

    这篇文章主要介绍了Python selenium自动化测试模型图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • pytorch图片分割原理分析

    pytorch图片分割原理分析

    自Transformer模型被应用于计算机视觉领域后,图像分割技术得到了进一步的发展,但图像分割操作复杂,特别是对张量的处理,涉及多种变换方法,其中,view/reshape用于改变数据形状,而permute/transpose用于改变数据的维度顺序
    2024-10-10
  • 教你如何用python开发一款数字推盘小游戏

    教你如何用python开发一款数字推盘小游戏

    这篇文章主要介绍了教你如何用python开发一款数字推盘小游戏,文中有非常详细的代码示例,喜对欢玩小游戏的或者正在学习python小游戏开发的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-04-04
  • python多重继承新算法C3介绍

    python多重继承新算法C3介绍

    这篇文章主要介绍了python多重继承新算法C3介绍,多重继承需要复杂的算法,本文就详细讲解了新算法C3,需要的朋友可以参考下
    2014-09-09
  • pandas实现滑动窗口的示例代码

    pandas实现滑动窗口的示例代码

    本文主要介绍了pandas实现滑动窗口的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Jmeter调用Python脚本实现参数互相传递的实现

    Jmeter调用Python脚本实现参数互相传递的实现

    这篇文章主要介绍了Jmeter调用Python脚本实现参数互相传递的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • 在阿里云服务器上配置CentOS+Nginx+Python+Flask环境

    在阿里云服务器上配置CentOS+Nginx+Python+Flask环境

    这篇文章主要介绍了在阿里云服务器上配置CentOS+Nginx+Python+Flask环境的教程,值得一提的是这里的方案用Nginx作反向代理而使用Gunicorn作wsgi服务器,需要的朋友可以参考下
    2016-06-06
  • Python快速简单生成矩形词云

    Python快速简单生成矩形词云

    这篇文章主要介绍了Python快速简单生成矩形词云的相关资料,需要的朋友可以参考下
    2023-03-03
  • Python3 利用requests 库进行post携带账号密码请求数据的方法

    Python3 利用requests 库进行post携带账号密码请求数据的方法

    今天小编就为大家分享一篇Python3 利用requests 库进行post携带账号密码请求数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • python的mysqldb安装步骤详解

    python的mysqldb安装步骤详解

    这篇文章主要介绍了python的mysqldb安装步骤详解的相关资料,这里提供实现的具体步骤,需要的朋友可以参考下
    2017-08-08

最新评论