当前位置: 首页 > news >正文

[python] Python元组、字典与集合的全面解析

元组

元组是Python中的一种不可变序列类型,使用圆括号 () 定义。元组中的元素可以是不同的数据类型,且即使只有一个元素,末尾也必须加逗号,否则定义的数据类型将不再是元组

yuan1 = ()  # 空元组
yuan = (1, 2, '3')  # 包含多个元素的元组
yuan2 = (1,)  # 单个元素的元组
print(yuan)  # 输出: (1, 2, '3')
print(yuan1)  # 输出: ()
print(yuan2)  # 输出: (1,)

元组与列表的主要区别在于元组是不可变的,即不支持增删改操作,只能进行查询操作。

print(yuan[1])  # 输出: 2

元组支持 countindexlen 等操作。

print(yuan.index(1))  # 输出: 0
print(len(yuan))  # 输出: 3
print(yuan.count(4))  # 输出: 0

列表推导式也可以用于元组。

[print(i * 2) for i in yuan]  # 输出: 2 4 33

字典

字典是Python中的一种可变映射类型,使用键值对形式保存数据,键是唯一的。字典中的元素通过键名访问,而不是通过下标。

  • get方法在获取值时可以设置默认值,如果没有查到则返回默认值
dict = {"id": 10001, "passwd": "123456"}
print(dict["id"])  # 输出: 10001
print(dict.get("id"))  # 输出: 10001
print(dict.get("idd", 10000))  # 输出: 10000
  • 字典支持修改、删除和添加元素。
  • 在修改键对应的元素时,如果不存在这个键,那么将会添加新的键值
  • popitem:删除最后一个键值对

  • clear:清空键值对

dict["id2"] = 10003  # 添加新键值对
print(dict)  # 输出: {'id': 10001, 'passwd': '123456', 'id2': 10003}del dict["id2"]  # 删除指定键值对
print(dict)  # 输出: {'id': 10001, 'passwd': '123456'}dict.popitem()  # 删除最后一个键值对
print(dict)  # 输出: {'id': 10001}# clear 清空内容 但是保留了字典
dict.clear()#pop 删除指定键值对, 不存在键值名就会报错
dict.pop("id")
  • 字典嵌套字典

dict = {"id":101,"passwd":"123","id2":{"name":"id2","passwd":"234"}}print(type(dict["id2"]))
print(dict["id2"])

字典的常见操作包括求长度、获取所有键名、获取所有值以及获取所有键值对。

  • 求长度   -----返回字典有多少个键值对
  • items: 返回字典里面包含的所有键值对, 以元组形式体现
  •  keys 返回所有的键名
print(len(dict))  # 输出: 1
print(dict.keys())  # 输出: dict_keys(['id'])
[print(i) for i in dict.keys()]  # 输出: id
[print(i) for i in dict.values()]  # 输出: 10001print(dict.items())  # 输出: dict_items([('id', 10001)])

集合

集合是Python中的一种无序且元素唯一的数据结构,使用花括号 {} 定义。空集合必须使用 set() 定义,否则会定义成字典。

  • 无序的,元素是唯一的
  • 可以用元组或者列表去重得到
  • 集合如果不是纯数字,那么每次运行的结果不一样,是因为hash值不同,但是int整形的哈希值就是它本身,再hash表中的位置不会被改变
     
s1 = {1, 2, 3}
s2 = set()  # 空集合
s3 = {'1', '2', 3}
print(s1)  # 输出: {1, 2, 3}
print(hash(1))  # 输出: 1
print(hash('1'))  # 输出: 随机哈希值

集合具有自动去重的特性。

s4 = {1, 2, 3, 3, 3, 4, 5, 6}
print(s4)  # 输出: {1, 2, 3, 4, 5, 6}

集合支持添加和删除元素。

  • update:添加元素是多个添加,会把元素拆分比如"123" 会拆分成"1" "2" "3"三个元素,所以update传递必须是可迭代对象,像int是不可以的。
s4.add(4)  # 添加单个元素
s4.add((1, 2))  # 添加元组
print(s4)  # 输出: {1, 2, 3, 4, 5, 6, (1, 2)}s4.update('567')  # 添加多个元素
print(s4)  # 输出: {1, 2, 3, 4, 5, 6, (1, 2), '5', '6', '7'}s4.remove(3)  # 删除指定元素
print(s4)  # 输出: {1, 2, 4, 5, 6, (1, 2), '5', '6', '7'}s4.pop()  # 删除随机元素
print(s4)  # 输出: {2, 4, 5, 6, (1, 2), '5', '6', '7'}s4.discard(199)  # 删除指定元素,不存在不报错
print(s4)  # 输出: {2, 4, 5, 6, (1, 2), '5', '6', '7'}

集合支持交集和并集操作。

  • 交集: 两个集合重合的部分
  • 并集:两个集合去重后所有的数据
a = {1, 2, 3, 4}
b = {2, 3, 4, 5}
print(a & b)  # 输出: {2, 3, 4}
print(a | b)  # 输出: {1, 2, 3, 4, 5}

技术补充

  • 元组:元组是不可变的,适合存储不需要修改的数据。由于不可变性,元组在某些情况下比列表更高效。
  • 字典:字典的键必须是不可变类型(如字符串、数字、元组),而值可以是任意类型。字典的查找速度非常快,因为它是基于哈希表实现的。
  • 集合:集合的元素必须是可哈希的,因此集合中的元素必须是不可变类型。集合常用于去重和集合运算(如交集、并集、差集等)。
http://www.xdnf.cn/news/471367.html

相关文章:

  • Linux常用命令41——passwd修改用户的密码值
  • OpenCV光流估计:原理、实现与应用
  • 深度解析物理机服务器故障修复时间:影响因素与优化策略
  • Linux常用的性能分析工具
  • 加密原理3-代码
  • 可视化图解算法40:二分查找-I
  • HGDB企业版迁移到HGDB安全版
  • fakeroot 在没有超级用户权限的情况下模拟文件系统的超级用户行为
  • 疲劳分析后处理参数意义?
  • LeetCode 2900.最长相邻不相等子序列 I:阅读理解题——O(n)一次遍历(贪心)
  • Makefile 详解
  • Vscode 配置python调试环境
  • QT——概述
  • 6.重建大师空三介绍
  • AI大模型:(二)2.5 人类对齐训练自己的模型
  • 低损耗高效能100G O Band DWDM 10km光模块 | 支持密集波分复用
  • 致远OA周报日报管理应用包【附百度网盘下载链接,官方售价8K】
  • Qt中控件的Viewport作用
  • 上线前测试组发现问题较多。开发总结
  • 《Python星球日记》 第80天:目标检测(YOLO、Mask R-CNN)
  • WordPress_Relevanssi Sql注入漏洞复现(CVE-2025-4396)
  • 用 Python 实现系统监控与资源管理:深入解析 `psutil` 库
  • HGDB插入超长字段报错指示列名的问题处理
  • C++核心编程--2 引用
  • 5月15日星期四今日早报简报微语报早读
  • IEEE出版|连续多年稳定检索|第三届信号处理与智能计算国际学术会议(SPIC2025)
  • 开源模型应用落地-模型上下文协议(MCP)-Resources-资源的使用逻辑
  • AI预测3D新模型百十个定位预测+胆码预测+去和尾2025年5月15日第78弹
  • ubuntu系统 usb网卡rtl8852bu驱动安装
  • CSS- 1.1 css选择器