首页
看点啥
插画图片
首页 科技看点 Python基础篇之元组tuple与字典dict用法完整指南

Python基础篇之元组tuple与字典dict用法完整指南

2026-11-05 0

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Python基础篇之元组tuple与字典dict用法”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

本篇目标

  • 搞懂元组"不可变"到底是什么意思、什么时候用
  • 掌握字典的增删改查与遍历
  • 学会字典推导式与 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元组适合结合实际项目边做边理解。先抓住核心思路,再逐步补上细节和边界处理,最后效果会更稳定,也更容易复用。

喜欢(0)

上一篇

C#网络编程基础之进程和线程完整指南

C#网络编程基础之进程和线程完整指南

下一篇

MySQL数据库多表操作与高级查询实践技巧整理实用指南

猜你喜欢