开发者社区> 流楚丶格念> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Python基础——元组,字典,集合

简介: Python基础——元组,字典,集合
+关注继续查看

元组


一. 元组的应用场景


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


答:列表?列表可以一次性存储多个数据,但是列表中的数据允许更改。


num_list = [10, 20, 30]
num_list[0] = 100


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


二. 定义元组


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


# 多个数据元组
t1 = (10, 20, 30)

# 单个数据元组
t2 = (10,)


注意:如果定义的元组只有一个数据,那么这个数据后面也好添加逗号,否则数据类型为唯一的这个数据的数据类型


t2 = (10,)
print(type(t2))  # tuple

t3 = (20)
print(type(t3))  # int

t4 = ('hello')
print(type(t4))  # str


三. 元组的常见操作


元组数据不支持修改,只支持查找,具体如下:


  • 按下标查找数据


tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1[0])  # aa


  • index():查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的index方法相同。


tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.index('aa'))  # 0


  • count():统计某个数据在当前元组出现的次数。


tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.count('bb'))  # 2


  • len():统计元组中数据的个数。


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)


字典


一. 字典的应用场景


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


二. 创建字典的语法


字典特点:(和map很像)


符号为大括号


数据为键值对形式出现


各个键值对之间用逗号隔开


# 有数据字典
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}

# 空字典
dict2 = {}

dict3 = dict()


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


三. 字典常见操作


3.1 增


写法:字典序列[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)


注意:字典为可变类型。


3.2 删


  • del() / 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)  # {}


3.3 改


写法:字典序列[key] = 值


注意:如果key存在则修改这个key对应的值 ;如果key不存在则新增此键值对。


3.4 查


3.4.1 key值查找


dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1['name'])  # Tom
print(dict1['id'])  # 报错


如果当前查找的key存在,则返回对应的值;否则则报错。


3.4.2 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


3.4.3 keys()


dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.keys())  # dict_keys(['name', 'age', 'gender'])


3.4.4 values()


dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
print(dict1.values())  # dict_values(['Tom', 20, '男'])


3.4.5 items()


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


四. 字典的循环遍历


4.1 遍历字典的key


dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for key in dict1.keys():
    print(key)


image


4.2 遍历字典的value


dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for value in dict1.values():
    print(value)


image


4.3 遍历字典的元素


dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for item in dict1.items():
    print(item)


image


4.4 遍历字典的键值对


dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
for key, value in dict1.items():
    print(f'{key} = {value}')


image


集合


一. 创建集合


创建集合使用{}或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


image


特点:(set)


  1. 集合可以去掉重复数据;


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


二. 集合常见操作方法


2.1 增加数据


  • 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)


image


2.2 删除数据


  • 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)


2.3 查找数据


  • in:判断数据在集合序列


  • not in:判断数据不在集合序列


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

print(10 in s1)
print(10 not in s1)


image

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python爬虫:常用的user_agent请求头
Python爬虫:常用的user_agent请求头
84 0
Python爬虫:scrapy-splash的请求头和代理参数设置
Python爬虫:scrapy-splash的请求头和代理参数设置
123 0
+关注
流楚丶格念
csdn平台优质创作者,51cto TOP博主,360图书馆科技博主,燕山大学目前大三在读,日拱一卒,功不唐捐,加油!!!
1010
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载