首页 / 资讯中心 / 文章详情

Python基础:第 06 篇 · 元组 tuple 与字典 dict

Python基础:第 06 篇 · 元组 tuple 与字典 dict ★ FEATURED ARTICLE
文章目录专栏导读第 06 篇 · 元组 tuple 与字典 dict本篇目标第一部分元组 tuple创建元组元组不可变元组支持的操作元组什么时候用元组解包超实用第二部分字典 dict创建字典查增 / 改删遍历其他常用方法字典推导式实战统计词频常见坑本篇小结练习题总结专栏导读本文已收录于《30天学习Python从入门到精通》本专栏专门针对于零基础和需要重新复习巩固的同学所准备的一套基础班教学从0基础到精通Python轻松掌握Python欢迎各位同学订阅专栏订阅地址点我直达此外如果您已工作如需利用Python解决办公中常见的问题欢迎订阅《Python办公自动化》专栏订阅地址点我直达第 06 篇 · 元组 tuple 与字典 dict作者小庄学Python 系列《Python基础大全》 · 30 篇从零到能写项目本篇目标搞懂元组不可变到底是什么意思、什么时候用掌握字典的增删改查与遍历学会字典推导式与get()的安全取值掌握元组/字典解包的实用技巧第一部分元组 tuple创建元组t1(1,2,3)t21,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)# 4t[0]# 1t[::-1]# (2, 3, 2, 1) 切片返回元组t.count(2)# 2t.index(3)# 23int# Truet(4,5)# (1, 2, 3, 2, 4, 5) 拼接生成新元组元组什么时候用数据不应该被修改如坐标(x, y)、RGB 颜色(255, 128, 0)作为字典的 key列表不行函数返回多个值Python 实际就是返回元组性能略好于列表遍历稍快元组解包超实用# 坐标x,y(10,20)# 交换变量a,bb,a# 函数返回多个值defget_user():return小庄,18,北京name,age,cityget_user()# 用 * 收集剩余first,*rest[1,2,3,4]print(first)# 1print(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{}empty2dict()# 从键值对序列创建dict([(a,1),(b,2)])# {a: 1, b: 2}dict(name小庄,age18)# {name: 小庄, age: 18}查user{name:小庄,age:18}user[name]# 小庄user[gender]# ❌ KeyErroruser.get(gender)# None 安全不会报错user.get(gender,未知)# 未知 带默认值nameinuser# True 查 key 是否存在永远优先用get()除非你确定 key 一定存在。增 / 改user[gender]男# key 不存在 新增user[age]20# key 存在 修改user.update({age:21,job:程序员})# 批量更新删user.pop(city)# 删除并返回该值user.pop(xxx,None)# 不存在时返回 None不报错deluser[age]# 直接删user.clear()# 清空遍历user{name:小庄,age:18,city:北京}# 遍历 key默认forkinuser:print(k)# 遍历 valueforvinuser.values():print(v)# 遍历键值对最常用fork,vinuser.items():print(f{k}:{v})其他常用方法user.keys()# 所有 keyuser.values()# 所有 valueuser.items()# 所有键值对len(user)# 3user.setdefault(level,1)# 有就返回原值没有就设置字典推导式# 生成平方映射{i:i**2foriinrange(5)}# {0:0, 1:1, 2:4, 3:9, 4:16}# 过滤{k:vfork,vinuser.items()ifv}# 键值互换{v:kfork,vind.items()}# 两个列表合成字典keys[a,b,c]vals[1,2,3]dict(zip(keys,vals))# {a: 1, b: 2, c: 3}实战统计词频textapple banana apple orange banana applewordstext.split()count{}forwordinwords:count[word]count.get(word,0)1print(count)# {apple: 3, banana: 2, orange: 1}Python 标准库给了更简洁的做法fromcollectionsimportCounter countCounter(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}forkinlist(d.keys()):ifd[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}。下一篇集合 set——去重和关系运算的利器。总结希望对初学者有帮助致力于办公自动化的小小程序员一枚希望能得到大家的【一个免费关注】感谢求个 关注 此外还有办公自动化专栏欢迎大家订阅Python办公自动化专栏求个 ❤️ 喜欢 ❤️此外还有爬虫专栏欢迎大家订阅Python爬虫基础专栏求个 收藏 此外还有Python基础专栏欢迎大家订阅Python基础学习专栏
阅读完成 · 觉得有帮助?
咨询建站