python学习笔记:06字典和集合
bigegpt 2024-12-31 09:32 7 浏览
字典
- 定义
字典是另一种可变容器模型,且可存储任意类型对象。
字典的数据结构为键值对结构
{key:value}
key必须是唯一的,且是不可变数据类型(如数值、字符串、元组),Value可以是任意类型的数据
{key: value}
- 字典创建
- 使用大括号 { } 创建空字典:
- 使用内建函数 dict() 创建字典:
- 常规定义方式
3、字典的增删改查
(1)字典
1)增加字典元素
①update 则可以更新key的值,如果不存在则添加键值对
②setdefault()查找‘值’,当‘键’不存在时会直接添加进去
③通过 变量名[键] = 值 来对应修改,当获取的‘键’不存在时,会直接添加进去;(存在修改,不存在添加)
2)删除字典元素
①pop 可以删除指定key
pop函数在删的同时会返回删除的’值‘到 变量名.pop(键) 代码处
②popitem 可以删除一个键值对
popitem函数在删的同时会返回删除的’键值对‘到 变量名 popitem(键) 代码处
3)修改字典
①通过 变量名[键] = 值 来对应修改,当获取的‘键’不存在时,会直接添加进去;(存在修改,不存在添加)
②通过update()修改‘键值对’,当不存在时会直接添加进去。
- 查找.
①通过for循环遍历; (这个是取‘键’)
结果为:
②通过‘键’取‘值’; (这个是取‘值’)==》变量名[键]
③通过get()访问。 (这个也是取‘值’)
# 写法格式:字典或变量名.get(键, 键不存在时返回的值)
当键不存在时,一般默认返回None(不报错),这个默认值可以自己设置,就是第二个参数(可以自定义)
4、字典内置方法列表
序号 | 函数及描述 |
dict.clear() | 删除字典内所有元素 |
dict.copy() | 返回一个字典的浅复制 |
dict.fromkeys() | 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
dict.get(key, default=None) | 返回指定键的值,如果键不在字典中返回 default 设置的默认值 |
key in dict | 如果键在字典dict里返回true,否则返回false |
dict.items() | 以列表返回一个视图对象 |
dict.keys() | 返回一个视图对象 |
dict.setdefault(key, default=None) | 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
dict.update(dict2) | 把字典dict2的键/值对更新到dict里 |
dict.values() | 返回一个视图对象 |
pop(key[,default]) | 删除字典 key(键)所对应的值,返回被删除的值。 |
popitem() | 返回并删除字典中的最后一对键和值。 |
集合
- 定义
(1)集合(set)是一个无序的不重复元素序列。
(2)集合中的元素不会重复,并且可以进行交集、并集、差集等常见的集合操作。
(3)可以使用大括号 { } 创建集合,元素之间用逗号,分隔,或者也可以使用 set() 函数创建集合。
注:
集合只能存储不可变的数据类型:字符串、元组、数值类型
集合中的元素是唯一的,可以利用集合的这个特点来给其他数据进行去重
- 集合的运算
- 集合的交集(&):指的是两个集合中相同的元素一个空集合用:set() 表示
- 集合的并集(|):指的是两个集合不相同的元素合并在一起
- 集合的差集(-):指的是两个集合减去两个集合中相同的元素
- 集合的基本操作
集合是可变的散列类型数据,所以添加、修改和删除是作用于源数据
1)增加集合元素
①add():是一次添加一个整体
②update():只能是添加序列,并且在添加时会进行拆分一个一个添加
2)删除集合元素
①remove():通过指定的元素进行删除,如果要删除的元素不存在会报错
②pop():随机删除集合中的某一个元素
③discard( ):移除集合中的元素,且如果元素不存在,不会发生错误
3)查找.
集合是一种无序、可变的散列类型数据,既没有索引号,也没有键,元素的排列是按照哈希算法去排的,一般呈现在人眼中的效果是‘随机(无序)’的,所以集合的元素只能通过for循环进行遍历‘无序’取出:
- 集合的判断
- 集合内置方法完整列表
方法 | 描述 |
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 返回集合的交集。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |
len() | 计算集合元素个数 |
运算符优先级
运算符 | 描述 |
** | 幂 运算 |
+、- | 一元运算符(正负号) |
*、1、% | 算术运算符(乘、除、取余) |
+、- | (加减) |
<、>、<=、>= | 比较运算符 |
==、!= | |
"=、%=、/=、-=、+=、*=、**=" | 赋值运算符 |
is、 is not | 身份运算符 |
in、 not in | 成员运算符 |
not > and > or | 逻辑运算符 |
可变和不可变总结
- 可变对象: list、 dict、 set
- 不可变对象: 数值、 str、 元组
练习题
1. 以下属于可变类型的是()
A. a = 1
B. lst = [1,2,3]
C. dic1 = {‘age’:18,’name’:’lucy’}
D. t =(5, 6, 7)
2. 编程题:杰克和汤姆一起去买水果,
这是他们的购物清单:
jack = {'西瓜', '葡萄', '香蕉', '苹果'},tom = {'苹果', '西瓜', '哈密瓜', '橘子'},
请问:他们买的一样的水果有几种?他们一共买了哪几种水果?
要求:使用集合的方法计算出结果,并输出
3. 给出一个列表:b = [11, 22, 33, 44, 55, 77, 88, 99],
用for循环将所有大于66的值逐一保存至字典的第一个‘键值对’的值中,
将小于66的值逐一保存至第二个‘键值对’的值中,并将结果输出来。
- 上一篇:第三课 python学习 集合
- 下一篇:Python中的数据类型
相关推荐
- 为3D手游打造, Visual Studio Unity扩展下载
-
IT之家(www.ithome.com):为3D手游打造,VisualStudioUnity扩展下载7月30日消息,微软正式发布升级版VisualStudioToolsforUnity扩...
- 由ArcMap属性字段自增引出字段计算器使用Python的技巧
-
1.前言前些日子有人问我ArcMap中要让某个字段的值实现自增有什么方法?我首先想到像SQLServer中对于数值型字段可以设置自增。所以我打开ArcCatalog查看发现只提供默认值,没办法只能看...
- 微软首次回答 HoloLens 相关问题,终于爆料了
-
fengo2015/04/2115:11注:本文作者张静是NVIDIAGPU架构师,微信公众号“黑客与画家”(HackerAndPainter),知乎专栏地址。欢迎各位童鞋与他交流探讨。...
- C#指针的应用(c#指针类型)
-
C#在有限的范围内支持指针。C#的指针只不过是一个持有另一类型内存地址的变量。但是在C#中,指针只能被声明为持有值类型和数组的内存地址。与引用类型不同,指针类型不被默认的垃圾收集机制所跟踪。出于同...
- C# 堆栈(Stack)(c# 堆栈中定位调用messagebox 的地方)
-
C#集合在C#中,堆栈(Stack)是一种后进先出(LIFO,LastInFirstOut)的数据结构。堆栈(Stack)适用于存储和按顺序处理数据,其中最新添加的元素会最先被移除。堆...
- 欢迎回来:Fortran意外重回流行编程语言20强榜单
-
TIOBE指数是用来确定一种编程语言受欢迎程度的指标之一。它并不表明哪种编程语言是最好的,也不表明哪种编程语言写的代码行数最多,而是利用在谷歌、维基百科、必应、亚马逊、YouTube等各种引擎和网站上...
- C#+NET MAUI实现跨平台/终端(linux,win,ios等)解决方案
-
简介.NETMulti-platformAppUI(.NETMAUI)是一个跨平台的框架,用于使用C#和XAML创建移动和桌面应用程序。使用.NETMAUI,您可以用一套代码库开发可以在A...
- C#代码安全红线:SQL注入防护终极方案,让你的系统固若金汤
-
在数字化时代,应用系统的安全性至关重要。而SQL注入攻击,长期盘踞在OWASP(OpenWebApplicationSecurityProject)漏洞榜单的前列,成为众多基于数据库的应用系统...
- C# (一)状态机模式(状态机代码实现)
-
最近空闲,炒炒隔夜饭,以前这些模式在自己项目种应用过不少,但一直没有像别人那样写一个系列,最近年纪大了,很多东西都忘记了,特别AI的兴起,更少写代码了,反正没什么事情,自己在重写一遍吧。创建型模式(5...
- C# 中 Predicate 详解(c#中的replace)
-
Predicate泛型委托:表示定义一组条件并确定指定对象是否符合这些条件的方法。此委托由Array和List类的几种方法使用,用于在集合中搜索元素。Predicate<T>...
- C#中$的用法?(c#中&&什么意思)
-
文章来自AI问答。在C#中,$符号用于字符串插值(StringInterpolation)。字符串插值是C#6.0引入的一种特性,它允许你在字符串中直接嵌入表达式,而不需要使用string.For...
- C#并行编程:Parallel类(c# 并行处理)
-
在Parallel类中提供了三个静态方法作为结构化并行的基本形式:Parallel.Invoke方法:并行执行一组委托。Parallel.For方法:执行与C#for循环等价的并行方法。Parall...
- 颠覆认知!用Span重构foreach循环竟让数据处理快如闪电
-
在C#编程的世界里,数据处理效率始终是开发者们关注的焦点。随着项目规模的扩大和数据量的激增,哪怕是细微的性能提升,都可能对整个应用的响应速度和用户体验产生深远影响。近年来,C#引入的Span<T...
- Unity3D手游开发实践《腾讯桌球》客户端开发经验总结
-
本次分享总结,起源于腾讯桌球项目,但是不仅仅限于项目本身。虽然基于Unity3D,很多东西同样适用于Cocos。本文从以下10大点进行阐述:1.架构设计2.原生插件/平台交互3.版本与补丁4.用脚本,...
- .NET 7 AOT 的使用以及 .NET 与 Go 互相调用
-
目录背景C#部分环境要求创建一个控制台项目体验AOT编译C#调用库函数减少体积C#导出函数C#调用C#生成的AOTGolang部分安装GCCGolang导出函数.NETC#...
- 一周热门
- 最近发表
- 标签列表
-
- mybatiscollection (79)
- mqtt服务器 (88)
- keyerror (78)
- c#map (65)
- resize函数 (64)
- xftp6 (83)
- bt搜索 (75)
- c#var (76)
- mybatis大于等于 (64)
- xcode-select (66)
- mysql授权 (74)
- 下载测试 (70)
- linuxlink (65)
- pythonwget (67)
- androidinclude (65)
- logstashinput (65)
- hadoop端口 (65)
- vue阻止冒泡 (67)
- oracle时间戳转换日期 (64)
- jquery跨域 (68)
- php写入文件 (73)
- kafkatools (66)
- mysql导出数据库 (66)
- jquery鼠标移入移出 (71)
- 取小数点后两位的函数 (73)