python中字典和集合对象是无序的_Python基础(四):元组、字典和集合

基础学习第四弹,常用对象:元组、字典和集合

一、元组

1.1 元组的应用场景

思考:如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做?

答:列表?列表可以一次性存储多个数据,但是列表中的数据允许更改。num_list = [10, 20, 30]

num_list[0] = 100

而一个元组可以存储多个数据,元组内的数据是不能修改的。

元组相当于是写死的列表

1.2 定义元组

元组特点:定义元组使用小括号,且逗号隔开各个数据,数据可以是不同的数据类型。# 多个数据元组

t1 = (10, 20, 30)

# 单个数据元组

t2 = (10,)注意:如果定义的元组只有一个数据,后面也要添加逗号,否则数据类型为唯一的这个数据的数据类型t2 = (10,)

print(type(t2)) # tuple

t3 = (20)

print(type(t3)) # int

t4 = ('hello')

print(type(t4)) # str

1.3 元组的常见操作

元组数据不支持修改,只支持查找,具体如下:按下标查找数据tuple1 = ('aa', 'bb', 'cc', 'bb')

print(tuple1[0]) # aaindex():查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的index方法相同。tuple1 = ('aa', 'bb', 'cc', 'bb')

print(tuple1.index('aa')) # 0count():统计某个数据在当前元组出现的次数。tuple1 = ('aa', 'bb', 'cc', 'bb')

print(tuple1.count('bb')) # 2len():统计元组中数据的个数。tuple1 = ('aa', 'bb', 'cc', 'bb')

print(len(tuple1)) # 4注意:元组内的直接数据如果修改则立即报错tuple1 = ('aa', 'bb', 'cc', 'bb')

tuple1[0] = 'aaa'但是如果元组里面有列表,修改列表里面的数据则是支持的,故自觉很重要。tuple2 = (10, 20, ['aa', 'bb', 'cc'], 50, 30)

print(tuple2[2]) # 访问到列表

# 结果:(10, 20, ['aaaaa', 'bb', 'cc'], 50, 30)

tuple2[2][0] = 'aaaaa'

print(tuple2)

二、字典

2.1 字典的应用场景

思考1: 如果有多个数据,例如:'Tom', '男', 20,如何快速存储?

答:列表list1 = ['Tom', '男', 20]

思考2:如何查找到数据'Tom'?

答:查找到下标为0的数据即可。list1[0]

思考3:如果将来数据顺序发生变化,如下所示,还能用list1[0]访问到数据'Tom'吗?。list1 = ['男', 20, 'Tom']

答:不能,数据'Tom'此时下标为2。

思考4:数据顺序发生变化,每个数据的下标也会随之变化,如何保证数据顺序变化前后能使用同一的标准查找数据呢?

答:字典,字典里面的数据是以键值对形式出现,字典数据和数据顺序没有关系,即字典不支持下标,后期无论数据如何变化,只需要按照对应的键的名字查找数据即可。

2.2 创建字典的语法

字典特点:符号为大括号

数据为键值对形式出现

各个键值对之间用逗号隔开# 有数据字典

dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

# 空字典

dict2 = {}

dict3 = dict()注意:一般称冒号前面的为键(key),简称k;冒号后面的为值(value),简称v。

2.3 增

写法:字典序列[key] = 值注意:如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

dict1['name'] = 'Rose'

# 结果:{'name': 'Rose', 'age': 20, 'gender': '男'}

print(dict1)

dict1['id'] = 110

# {'name': 'Rose', 'age': 20, 'gender': '男', 'id': 110}

print(dict1)注意:字典为可变类型。

2.4 删del():删除字典或删除字典中指定键值对。dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

del dict1['gender']

# 结果:{'name': 'Tom', 'age': 20}

print(dict1)clear():清空字典dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

dict1.clear()

print(dict1) # {}

2.5 改

写法:字典序列[key] = 值注意:如果key存在则修改这个key对应的值 ;如果key不存在则新增此键值对。

2.6 查

key值查找dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

print(dict1['name']) # Tom

print(dict1['id']) # 报错如果当前查找的key存在,则返回对应的值;否则则报错。

get()语法字典序列.get(key, 默认值)注意:如果当前查找的key不存在则返回第二个参数(默认值),如果省略第二个参数,则返回None。快速体验dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

print(dict1.get('name')) # Tom

print(dict1.get('id', 110)) # 110

print(dict1.get('id')) # None

keys()

返回一个字典所有的键dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

print(dict1.keys())

# dict_keys(['name', 'age', 'gender'])

values()

返回一个字典所有的值dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

print(dict1.values()) # dict_values(['Tom', 20, '男'])

items()

以列表返回可遍历的(键, 值) 元组数组dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

print(dict1.items()) # dict_items([('name', 'Tom'), ('age', 20), ('gender', '男')])

三、字典的循环遍历

3.1 遍历字典的keydict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

for key in dict1.keys():

print(key)

输出结果name

age

gender

3.2 遍历字典的valuedict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

for value in dict1.values():

print(value)

输出结果Tom

20

3.3 遍历字典的元素

返回对象是元组dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

for item in dict1.items():

print(item)

输出结果('name', 'Tom')

('age', 20)

('gender', '男')

3.4 遍历字典的键值对dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

for key, value in dict1.items():

print(f'{key} = {value}')

输出结果name = Tom

age = 20

gender = 男

四、集合

4.1 创建集合

创建集合使用{}或set(), 但是如果要创建空集合只能使用set(),因为{}用来创建空字典。s1 = {10, 20, 30, 40, 50}

print(s1)

# 无序的

s2 = {10, 30, 20, 10, 30, 40, 30, 50}

print(s2)

# 不重复的

s3 = set('abcdefg')

print(s3)

s4 = set()

print(type(s4)) # set

s5 = {}

print(type(s5)) # dict特点:集合可以去掉重复数据;

集合数据是无序的,故不支持下标

4.2 增加数据add()s1 = {10, 20}

s1.add(100)

s1.add(10)

print(s1) # {100, 10, 20}因为集合有去重功能,所以,当向集合内追加的数据是当前集合已有数据的话,则不进行任何操作。update(), 追加的数据是序列。s1 = {10, 20}

# s1.update(100) # 报错

s1.update([100, 200])

s1.update('abc')

print(s1)

# {100, 'c', 200, 10, 'b', 20, 'a'}

4.3 删除数据remove(),删除集合中的指定数据,如果数据不存在则报错。s1 = {10, 20}

s1.remove(10)

print(s1)

s1.remove(10) # 报错

print(s1)discard(),删除集合中的指定数据,如果数据不存在也不会报错。s1 = {10, 20}

s1.discard(10)

print(s1)

s1.discard(10)

print(s1)pop(),随机删除集合中的某个数据,并返回这个数据。s1 = {10, 20, 30, 40, 50}

del_num = s1.pop()

print(del_num)

print(s1)

4.4 查找数据in:判断数据在集合序列

not in:判断数据不在集合序列s1 = {10, 20, 30, 40, 50}

print(10 in s1)

print(10 not in s1)

# True False

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/270702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows常用必备软件整理,太全了,值得收藏

目录 1、Office系列 2、杀毒软件 3、视频播放和视频处理 4、音乐播放 5、压缩解压 6、输入法 7、PDF阅读软件 8、文件加密 9、网盘 10、社交聊天 11、日常办公软件 ‍12、图片/照片处理‍ 13、系统自带的工具 Windows常用必备软件整理,太全了,值得收藏&…

常见的 Error 和 Exception

如下是常见的 Error 和 Exception: 1)运行时异常(RuntimeException)也称 【非检查型异常 UncheckedException】: Nullpointer Exception:空指针异常;ClassCastException:类型强制转…

Datatable/Dataset 转 JSON方法

当数据库表的数据在一般处理程序中查出来需要将这个表数据返回到前台的jquery中,需要将数据拼成json字符串形式,这里是将数据库数据查出放在Datatable中,然后在一般处理程序中将datatable转成json的几个方法,根据不同的情况调用不…

数据库:SQLServer数据库备份方式介绍

今天小编给大家梳理一下数据库备份的相关知识,希望对大家能有所帮助!1、完整备份完整备份相当于针对整个数据库备份,包含数据库的全部内容。数据库完整备份可以将数据库的所有内容备份为一个.Bak文件。后续可以通过该备份文件在本机或者拷贝到…

注入双括号报错注入_SQL手动注入:sqlilabs(less110)

种一棵树最好的时间是10年前,其次是现在。忘了是谁前言说实话,由于前段时间学 python ,对于 OWASP TOP10 漏洞的学习都有所落下,虽然现在也在慢慢复习当中,但是今晚谈及的 SQL 注入漏洞手动注入和自动化(sqlmap)注入的…

try、catch、finally用法总结

一、异常的处理:抓抛模型过程一:"抛":程序在正常执行的过程中,一旦出现异常,就会在异常代码处生成一个对应异常类的对象。并将此对象抛出。一旦抛出对象以后,其后的代码就不再执行。关于异常对象…

markdown学习/mou

markdown编辑器mou markdown编辑器的使用很简单,mac平台选择课 MOU 这款比较轻的客户端。 使用也很方便,打开软件,->helo->mou help 就有各种示例,照葫芦画瓢。 有些关键字需要转义,使用的时候要注意,比如插入一…

硬件知识:内存条出现故障的解决方案!

“电脑不时的突然出现蓝屏”,“开机之后毫无规律的死机”,“开不了机,一开机就出现嘶鸣声”,如果你的电脑出现了以上情况,就是你的内存兼容性出了问题,那么这种故障该如何解决呢?下面&#xff0…

api zabbix 拓扑图 获取_zabbix网络拓扑图配置-Maps(示例代码)

zabbix network map”可以简单的理解为动态网络拓扑图,可以针对业务来配置zabbix map,通过map可以了解应用的整体状况:服务器是否异常、网络是否有故障、应用当前什么状态。如果你不需要这些东西,至少你可以通过network map绘制一…

.NET 面试题(2)

61、Application 、Cookie和 Session 两种会话有什么不同? 1.Application 储存在服务端,没有时间限制,服务器关闭即销毁(前提是自己没写销毁方法) 2.Session 储存在服务端,客户端(浏览器&#x…

盘点程序员必备的专业术语,值得看一看

英文缩写 API 应用程序接口(英语:Application Programming Interface,简称:API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定。由于近年来软件的规模日益庞大,常常需要把…

app上线发布流程_APP上线发布流程

上线流程上线流程的主要步骤在上线之前对程序进行内存动态和静态分析,注意启动图的屏幕适配,不然会自动拉升屏幕,使得屏幕自动适配失效生成cer证书:cer是一个跟电脑相关联的证书文件,让电脑具备真机调试的功能要借助CS…

java.io.IOException: Broken pipe 的异常处理

断开的管道 java.io.IOException: Broken pipe 解决方法 一、Broken pipe产生原因分析 1.当访问某个服务突然服务器挂了,就会产生Broken pipe; 2.客户端读取超时关闭了连接,这时服务器往客户端再写数据就发生了broken pipe异常! 二、方案…

IDEA中安装配置Jrebel热部署插件用法笔记

今天给大家介绍一下IDEA中安装配置Jrebel热部署插件用法,希望对大家能有所帮助!1、Jrebel插件介绍JRebel属于一款JAVA虚拟机插件,它可以让你的项目在不需要进行重新编译的情况下,就可以实时看到代码的变化对项目的影响。这对我们开…

集成支付宝钱包支付iOS SDK的方法与经验

下载 首先,你要想找到这个SDK,都得费点功夫。现在的SDK改名叫移动支付集成开发包了。 https://b.alipay.com/order/productDetail.htm?productId2013080604609654&tabId4#ps-tabinfo-hash Baidu和Googlep排在前面的支付宝开放平台,里面的…

zabbix 监控项自动发现过滤_【Zabbix监控教程】LLD低级别自动发现配置教程

低级别自动发现简称LLD,使用低级别自动发现可以实现根据Agent的实际情况去自动创建监控项,适用于配置不一的环境。比如A主机有3块硬盘,B主机有5块硬盘,如果不使用LLD的话就需要人肉去为每个硬盘创建监控项。而有了LLD就可以实现自…

Spring Boot单元测试报错java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]

一:运行test类方法时候报错 报错 java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]. Specify BootstrapWiths value attribute or make the default bootstrapper class available.at org.springframework.test.context.BootstrapU…

PHP底层原理分析和底层扩展编写

运行原理 http://www.phpchina.com/article-40203-1.htmlPHP底层开发 可以理解为就是C的开发,那么简单地说如果我们要查看某个PHP函数的底层实现怎么看呢?需要PHP源码包:http://www.php.net/downloads.php主要目录是Zend 和ext(写扩展的目录…

硬件知识:DP接口和HDMI接口对比,看完你就懂了

目录 一、DP接口 二、HDMI接口 三、总结 电脑显示器高清传输通过会用到两个接口,就是DP接口和HDMI接口,今天电脑学习小编带大家对比一下这两个接口。 一、DP接口 DisplayPort缩写DP,是一个由PC及芯片制造商联盟开发,视频电子标准协…

文治者必有武备不然长大了挨欺负_【博古斋·六月春拍】人文事者必有武备

原标题:【博古斋六月春拍】人文事者必有武备上海博古斋 2017年春季艺术品拍卖会6月24日 中国书画 文房雅玩6月25日 古籍善本文献资料上海大剧院八楼宴会厅(上海市黄陂北路200号A1门入口)图录已寄出,请各位藏友注意查收人文事者必有武备LOT 1649 武备志二…