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) 拼接生成新元组
元组什么时候用
- 数据不应该被修改:如坐标
(x, y)、RGB 颜色(255, 128, 0) - 作为字典的 key(列表不行)
- 函数返回多个值(Python 实际就是返回元组)
- 性能略好于列表,遍历稍快
元组解包(超实用)
# 坐标
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是统计类任务的利器
练习题
- 定义元组存"某商品的名称、单价、库存",用解包取出三个值并打印。
- 统计一段英文文本中每个单词出现的次数,输出出现最多的 3 个。
- 把两个字典合并(相同 key 的值相加),如
{"a":1,"b":2}+{"b":3,"c":4}→{"a":1,"b":5,"c":4}。
以上就是Python基础篇之元组tuple与字典dict用法详解的详细内容,更多关于Python元组tuple与字典dict的资料请关注脚本之家其它相关文章!
相关文章
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
这篇文章主要介绍了在阿里云服务器上配置CentOS+Nginx+Python+Flask环境的教程,值得一提的是这里的方案用Nginx作反向代理而使用Gunicorn作wsgi服务器,需要的朋友可以参考下2016-06-06
Python3 利用requests 库进行post携带账号密码请求数据的方法
今天小编就为大家分享一篇Python3 利用requests 库进行post携带账号密码请求数据的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2018-10-10


最新评论