Python-字典与集合

本文介绍了Python编程语言中的字典和集合基础知识,包括字典的定义、支持的数据类型、基本操作,以及集合的基本概念、与列表的区别、集合运算和常用方法。通过实例展示了如何创建、读取、修改和删除字典元素,以及集合的合并、删除、交集、差集等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习内容:Python基础入门知识

专栏作者不渴望力量的哈士奇不渴望力量的哈士奇擅长Python全栈白宝书[更新中],⑤ - 数据库开发实战篇,网安之路,等方面的知识,不渴望力量的哈士奇关注云原生,算法,python,集成测试,去中心化,web安全,智能合约,devops,golang,功能测试,测试工具,推荐算法领域.https://blog.youkuaiyun.com/weixin_42250835?type=blog

学习专栏① - 零基础入门篇_不渴望力量的哈士奇的博客-优快云博客

声明:本文内容大部分为引用,是在学习过程中复制的大佬的文章,仅供学习使用,仅作为笔记参考。

笔记目录

目录

📣 Python笔记

📣 字典

  🧭  字典的基本概念

    ⭐  字典的定义

    ⭐  字典支持的数据类型

  🧭  字典的基本操作

📣 集合

  🧭  集合的基本概念

  🧭  集合和列表的区别

  🧭  集合的运算

  🧭  集合常用的方法 



📣 Python笔记

📣 字典

  🧭  字典的基本概念

        字典是多个键值对所组成的一种数据类型。一个键(key)对应一个值(value)。其中键是索引,可以是任意不可变的类型。键和值放在 { } 中间,每一对键值对之间用逗号分开。

        在Python中,dict代表着字典这一类型,也可以用它定义一个字典。

    ⭐  字典的定义

        字典通常用于描述一个对象的属性,如果一个物品的信息,如:颜色、大小、形状等。

# 字典的定义
soap = {'name':'上海硫磺皂','color':'yellow','teast':'茉莉花'}
print('香皂的名:'+ soap['name'])
print('香皂的颜色:' + soap['color'])
print('香皂的味道:' + soap['teast'])

    ⭐  字典支持的数据类型

        键(key)支持 字符串、数字、元组类型,但不支持列表类型。

                🌠 通常是字符串或数字。

                🌠 如果一个元组质保函字符串、数字或者元组,那么这个元组可以用作键(key)。

                🌠 如果元组直接或间接的包含了可变对象,那么它就不能用作键(key)。

        值(value)支持所有的Python数据类型

# 字典中键和值所支持的数据类型
person = {'name':'张三', 'age':23, 'weight':65.3, 'height':175, 'now':'2022-11-20'}
print(type(person['name']))
print(type(person['age']))
print(type(person['weight']))
print(type(person['now']))

         声明一个空的字典,两种方式:

# 两种方式声明空的字典
dict_1 = {}
dict_2 = dict()
print(dict_1, type(dict_1))
print(dict_2, type(dict_2))

  🧭  字典的基本操作

        字典的读取:

# 字典的读取
soap = {'name':'上海硫磺皂','color':'yellow','teast':'茉莉花'}
print('香皂的名:'+ soap['name'])
print('香皂的颜色:' + soap['color'])
print('香皂的味道:' + soap['teast'])

        字典的值的修改:

soap = {'name':'上海硫磺皂','color':'yellow','teast':'茉莉花'}
print('香皂的名:'+ soap['name'])
print('香皂的颜色:' + soap['color'])
print('香皂的味道:' + soap['teast'])
soap['color'] = '黄色'
print('修改后的香皂的颜色:' + soap['color'])

         向字典中添加键值对:


print('添加前字典:', soap)
soap['tip'] = '好用极了'
print('添加后字典:', soap)

         删除字典中的键值对:

soap = {'name':'上海硫磺皂','color':'yellow','teast':'茉莉花'}
print('删除前的字典:', soap)
del soap['color']
print('删除后的字典:', soap)

 

         查询某个成员是否在字典中:

soap = {'name':'上海硫磺皂','color':'yellow','teast':'茉莉花'}
print('name属性是否在字典中:', 'name' in soap)
print('age属性是否在字典中:', 'age' in soap)
print('茉莉花  是否在字典中:', '茉莉花' in soap)

          💡  查询时是根据键(key)进行查询的,并不是通过值(value)进行查询。

📣 集合

  🧭  集合的基本概念

        集合是一个无序的(使用哈希存储)、不重复的序列。它的基本用法包括成员检测和消除重复元素。集合元素也支持像联合、交集、差集、对称差等数学运算。集合和字典一样,也是存放在 { } 中,不过,集合中的元素不是键值对的形式。

        {1,2,3}、{'b', 'c', 'd'}

cars = {'比亚迪','吉利','五菱'}
print('车的品牌:', cars)
score = {120,134,117,117}
print('英语成绩:',score)

        由输出结果可以知道,存储的顺序和输出的顺序并不相同,所以,集合并不是有序的。并且,集合会把集合中重复的元素剔除。

arr_1 = {{1,}, {2, }}
print(arr_1)

arr_2 = {[1, ],[2, ]}
print(arr_2)

        💡  因为 set 集合只能包含不可变对象元素,而列表、集合本身都是可变对象,所以会报错。

  🧭  集合和列表的区别

        列表中的元素允许重复,输出时列表不会剔除多余元素。

        列表是有序的,定义的是什么样子,输出就是什么样子。集合可能会有变化。

        集合中没有索引的概念,而列表中提供了索引服务,因为他是有序的,可以通过下标进行查找的数据结构。

  🧭  集合的运算

        💦 运算符 |        合并多个集合

# 合并多个集合
set_1 = {1, 2, 3}
set_2 = {4, 5}
set_3 = {3,4,5,6}
set_4 = (set_1 | set_2)
set_5 = (set_1 | set_3)
print(set_4)   # 输出:{1,2,3,4,5}
print(set_5)   # 输出:{1,2,3,4,5,6}

         💡 集合在合并过程中会自动的剔除重复的元素 

        💦 运算符 -        从集合中删除元素

# 从集合中删除元素
set_1 = {1, 2, 3}
set_2 = {4, 5}
set_3 = {3,4,5,6}
set_4 = (set_1 - set_2)
set_5 = (set_1 - set_3)
print(set_4)   # 输出:{1,2,3}
print(set_5)   # 输出:{1,2}

        💦 运算符 &         取两个集合的交集

# 取两个集合的交集
set_1 = {1, 2, 3}
set_2 = {4, 5}
set_3 = {3,4,5,6}
set_4 = (set_1 & set_2)
set_5 = (set_1 & set_3)
print(set_4)   # 输出:set()
print(set_5)   # 输出:{3}

         💦 运算符 ^        取两个集合的差集

# 取两个集合的差集
set_1 = {1, 2, 3}
set_2 = {4, 5}
set_3 = {3,4,5,6}
set_4 = (set_1 ^ set_2)
set_5 = (set_1 ^ set_3)
print(set_4)   # 输出:{1,2,3,4,5}
print(set_5)   # 输出:{1,2,4,5,6}

        💦 关键字 in        检查集合中是否包含指定的元素

# 取两个集合的差集
set_1 = {1, 2, 3}
set_2 = {4, 5}

print(1 in set_1)   # 输出:True
print(2 in set_2)   # 输出:False

  🧭  集合常用的方法 

        📌 add(item)        向集合中添加元素

# 向集合中添加元素
set_1 = {1, 2, 3}
set_2 = {4, 5}
set_1.add(6)
print(set_1)   # 输出:{1,2,3,6}
set_2.add('Hi')
print(set_2)    # 输出:{'Hi',4,5}

         📌 remove(item)        从集合中删除元素

# 向集合中删除成员
set_1 = {1,2,3,4,7}
print('执行remove之前集合的成员:',set_1)
set_1.remove(7)
print('执行remove之后集合的成员:', set_1)

         📌clear() 方法        清除集合中所有的元素

# 清除集合中所有的元素
set_1 = {1, 2, 3}
print('清除之前的集合的样子:',set_1)
set_1.clear()
print('清除之后的集合的样子:',set_1)

         📌union() 方法        返回两个集合的并集

# union() 返回两个集合的并集
set_1 = {1,2}
set_2 = {2,3,4}
print(set_2.union(set_1))

        📌intersection() 方法        返回两个集合的交集

# intersection() 返回两个集合的交集
set_1 = {1, 2}
set_2 = {2, 3, 4}
print(set_2.intersection(set_1))

        📌issubset() 方法        判断一个集合是不是另一个集合的子集

# issubset() 判定集合是否为子集
set_1 = {1, 2}
set_2 = {2, 3, 4}
set_3 = {2}
print(set_1.issubset(set_2))   # 判断set_1是否为set_2的子集  返回:False
print(set_3.issubset(set_2))   # 判断set_3是否为set_2的子集  返回:True

        📌issuperset​​​​​​​​​​​​​​() 方法        判断一个集合是不是另一个集合的超集

# 判断一个集合是否是另一个集合的超集
set_1 = {1, 2}
set_2 = {2, 3, 4}
set_3 = {2}
print('判断set_2是否是set_3的超集:',set_2.issuperset(set_3))     
print('判断set_2是否是set_1的超集:', set_2.issuperset(set_1))

🌞书山有路勤为径,学海无涯苦作舟。🌞​​​​​​​

### Qt 使用 MSVC 编译后 windeployqt 打包生成的 exe 文件无法运行的原因分析与解决方案 当使用 MSVC 编译器构建并尝试通过 `windeployqt` 工具打包时,可能会遇到生成的 `.exe` 文件无法正常运行的情况。以下是可能原因及其对应的解决方案: #### 1. **缺少必要的动态链接库 (DLL)** 如果目标计算机上未安装 Visual C++ Redistributable 或者某些依赖项缺失,则可能导致程序崩溃或无法启动。例如,“应用程序无法正常启动(0xc000007b)”错误通常是因为缺少特定版本的 Microsoft VC++ Runtime 库[^2]。 ##### 解决方法: - 确保目标机器已安装对应版本的 Visual C++ Redistributable 包。 - 如果不想让用户手动安装这些组件,可以将所需的 DLL 文件随同应用一起分发。可以通过以下方式获取所需文件列表: ```bash D:\Qt5.4.1\5.4\msvc2013_64_opengl\bin\windeployqt --list all test.exe ``` #### 2. **不匹配的架构** 另一个常见问题是编译环境和目标平台之间的架构冲突。比如,在 x86 架构的目标设备上部署了一个针对 x64 平台优化的应用程序,反之亦然。这种情况下也会引发类似的错误消息:“应用程序无法正常启动”。 ##### 解决办法: - 检查项目的配置设置以及所选 Kits 是否一致; - 对应不同体系结构重新编译整个工程,并再次运用 `windeployqt` 命令处理新的二进制输出物[^5]; #### 3. **插件路径问题** 有时即使所有的核心库都存在,但如果某些图形界面或其他功能相关的插件未能被正确复制到指定位置,也可能阻止程序加载成功。 ##### 处理措施: - 当调用 `windeployqt` 的时候加上参数 `--qmldir` 来指明 QML 文件所在的目录以便自动收集相关联的模块资源[^3]: ```bash D:\Qt5.4.1\5.4\msvc2013_64_opengl\bin\windeployqt --qmldir path_to_qml_files test.exe ``` #### 4. **其他潜在因素** 除了上述提到的内容外,还有可能存在诸如网络访问权限不足、数据库连接字符串有误等问题影响最终用户体验效果。因此建议开发者们仔细阅读调试日志寻找蛛丝马迹进一步排查具体障碍所在之处[^4]. ```python import os print(os.getcwd()) # 获取当前工作目录用于验证是否处于正确的上下文中执行命令 ``` ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

掩月天权

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值