元组、字典、集合

1、元组

1.1 元组简介

  • 元组表现形式tuple
  • 元组是⼀个不可变序列(⼀般当我们希望数据不改变时,我们使⽤元组,其他情况下基本都⽤列表)
  • 使⽤()创建元素
  • 元组不是空元组⾄少有⼀个 逗号(,) 当元组不是空元组时括号可以省略
  • 元组解包指将元组当中的每⼀个元素都赋值给⼀个变量
# 元组的拆包
tuple1 = (1, 2, 3, 4)
a, b, *c = tuple1  # *是一个通配符
print(a)
print(b)
print(c)

结果如下:
在这里插入图片描述

2、字典

2.1 字典简介

  • 字典属于⼀种新的数据结构称为映射(mapping)
  • 字典的作⽤和列表类似,都是⽤来存储对象的容器
  • 列表存储数据的性能好,但是查询数据的性能差,字典正好与之相反
  • 在字典中每⼀个元素都有唯⼀的名字,通过这个唯⼀的名字可以找到指定的元素
  • 这个唯⼀的名字我们称之为key 通过key可以快速查询value 也可以称之为值
  • 字典我们也称之为键值对(key-value)结构
  • 每个字典中都可以有多个键值对,⽽每⼀个键值对我们称其为⼀项(item)
  • 创建⼀个有数据的字典 语法 {key:value}
  • 字典的值可以是任意对象 字典的键可以是任意的不可变对象(int str booltuple…)
  • 字典的键是不能重复的,如果出现重复的后⾯的会替换前⾯的

2.2字典的使用

  • dict()函数来创建字典
# 字典的创建  dict {}
dict1 = {}  # 创建空字典
print(type(dict1))

dict2 = {'name': '杨过', 'age': '18', 'gender': '男'}
print(dict2)

结果如下:
在这里插入图片描述

  • get(key[,default]) 根据键来获取字典的值。第⼆个参数可以指定⼀个默认值,当获取不到值的时候会返回默认值
dict1 = {
    'name': '杨过',
    'age': '18',
    'gender': '男',
    'skill': '黯然消魂掌'
}
print(dict1.get('skill'))
print(dict1.get('sex', '不存在'))

结果如下:
在这里插入图片描述

  • update() 将其他字典的key-value添加到当前的字典当中
dict1 = {
    'name': '杨过',
    'age': '18',
    'gender': '男',
    'skill': '黯然消魂掌'
}
dict1.update({'1': 1, "2": 2, '3': 3})
print(dict1)

结果如下:
在这里插入图片描述

  • del 删除字典中的key-value
dict1 = {
    'name': '杨过',
    'age': '18',
    'gender': '男',
    'skill': '黯然消魂掌'
}
del dict1['name']
print(dict1)

结果如下:
在这里插入图片描述

  • popitem() 删除字典最后的⼀个key-value 这个⽅法是有返回值的。删除之后它会将删除的key-value作为返回值返回
dict1 = {
    'name': '杨过',
    'age': '18',
    'gender': '男',
    'skill': '黯然消魂掌'
}
a = dict1.popitem()
print(a)
print(dict1)

结果如下:
在这里插入图片描述

  • pop(key[,default]) 根据key删除⾃定中的value。第⼆个参数可以指定⼀个默认值,当获取不到值的时候会返回默认值
dict1 = {
    'name': '杨过',
    'age': '18',
    'gender': '男',
    'skill': '黯然消魂掌'
}
a = dict1.pop('age')
b = dict1.pop('123', '不存在')
print(a, b)
print(dict1)

结果如下:
在这里插入图片描述

  • copy() ⽅法⽤来对字典进⾏潜复制(注意:潜复制只会复制字典本身,如果字典中还有个字典是不会进⾏复制的)
import copy
# 浅拷贝: 只能拷贝第一层的数据,不能拷贝第二层乃至更多蹭数据;外层添加元素时,浅拷贝不会随原列表变化而变化;内层添加元素时,浅拷贝才会变化。
dict1 = {'name': 123, 'data': [1, 2, 3]}
dict2 = copy.copy(dict1)
dict1['name'] = 456
dict1['data'][1] = 456
print(dict1, dict2)
print(id(dict1), id(dict2))

结果如下:
在这里插入图片描述
深拷贝:deepcopy()

import copy
# 深拷贝: 能够将所有层次的数据拷贝出来,重新独立一份;无论原列表如何变化,深拷贝都保持不变。
dict1 = {'name': 123, 'data': [1, 2, 3]}
dict2 = copy.deepcopy(dict1)
dict1['data'][1] = 456
print(dict1, dict2)
print(id(dict1['data']), id(dict2['data']))
print(id(dict1), id(dict2))

结果如下:
在这里插入图片描述

2.3 遍历字典

  • keys() 该⽅法返回字典所有的key
dict1 = {
    'name': '杨过',
    'age': '18',
    'gender': '男',
    'skill': '黯然消魂掌'
}
# keys()
for k in dict1.keys():
    print(k, dict1[k])

结果如下:
在这里插入图片描述

  • values() 该⽅法返回⼀个序列 序列中保存有字典的值
dict1 = {
    'name': '杨过',
    'age': '18',
    'gender': '男',
    'skill': '黯然消魂掌'
}
# values()
for v in dict1.values():
    print(v)

结果如下:
在这里插入图片描述

  • items() 该⽅法会返回字典中所有的项 它返回⼀个序列,序列中包含有双值⼦序列 双值分别是 字典中的key和value
dict1 = {
    'name': '杨过',
    'age': '18',
    'gender': '男',
    'skill': '黯然消魂掌'
}
# items()
for k, v in dict1.items():
    print(k, v)

结果如下:
在这里插入图片描述

3、集合

3.1 集合的简介

  • 集合表现形式set 集合和列表⾮常相似
  • 不同点
    – 集合只能存储不可变对象
# 集合只能存储不可变对象
set1 = {1, 2, 3, 4, 5}
print(set1)

– 集合中存储的对象是⽆序的

# 集合中存储的对象是无序的,他是没有索引的
set2 = {6, 8}
print(set2)

结果如下:
在这里插入图片描述

– 集合不能出现重复元素

# 集合不能出现重复元素,根据这个特性,可以用集合去重
set3 = {1, 1, 2, 2, 3, 4}
print(set3)

结果如下:
在这里插入图片描述

3.2 集合的使用

  • 使⽤{}来创建集合
# 创建空集合
set1 = set()
print(type(set1))
  • 可以通过set()来将序列和字典转换成集合
list1 = [1, 1, 2, 2, 3, 4]
set4 = set(list1)
print(set4)
list1 = list(set4)
print(list1)
  • len() 使⽤len()来获取集合中元素的数量
a = {1, 2, 3, 4}
print(len(a))

结果如下:
在这里插入图片描述

  • add()像集合中添加元素
a = {1, 2, 3, 4}
a.add(5)
print(a)

结果如下:
在这里插入图片描述

  • update()将⼀个集合中的元素添加到另⼀个集合当中
a = {1, 2, 3, 4}
a.update({5, 6, 7})
print(a)

结果如下:
在这里插入图片描述

  • pop()随机删除集合中的⼀个元素⼀般是删除最后⼀个元素
a = {1, 2, 3, 4}
a.pop()
print(a)

结果如下:
在这里插入图片描述

  • remove() 删除集合中指定的元素
a = {1, 2, 3, 4}
a.remove(3)
print(a)

结果如下:
在这里插入图片描述

  • clear() 清空集合
a = {1, 2, 3, 4}
a.clear()
print(a)

结果如下:
在这里插入图片描述

3.3 集合的运算

  • & 交集运算
s1 = {1, 2, 3}
s2 = {3, 4, 5}

# & 交集运算
print(s1 & s2)

结果如下:
在这里插入图片描述

  • | 并集运算
s1 = {1, 2, 3}
s2 = {3, 4, 5}

# # | 并集运算
print(s1 | s2)

结果如下:
在这里插入图片描述

  • – 差集运算
s1 = {1, 2, 3}
s2 = {3, 4, 5}

# # - 差集运算
print(s1 - s2)
print(s2 - s1)

结果如下:
在这里插入图片描述

  • ^ 亦或集
s1 = {1, 2, 3}
s2 = {3, 4, 5}

# # ^亦或集
print(s1 ^ s2)

结果如下:
在这里插入图片描述

  • <= 检查⼀个集合是否是另⼀个集合的⼦集
s1 = {1, 2, 3}
s2 = {3, 4, 5}
s3 = {1, 2, 3, 4, 5, 6}
# <= 检查⼀个集合是否是另⼀个集合的⼦集
print(s1 <= s2)
print(s1 <= s3)

结果如下:
在这里插入图片描述

  • < 检查⼀个集合是否是另⼀个集合的真⼦集
s1 = {1, 2, 3}
s2 = {3, 4, 5}
s3 = {1, 2, 3, 4, 5, 6}

# < 检查⼀个集合是否是另⼀个集合的真⼦集
print(s1 < s2)
print(s1 < s3)

结果如下:
在这里插入图片描述

  • ">="检查⼀个集合是否是另⼀个集合的超集
s1 = {1, 2, 3}
s2 = {3, 4, 5}
s3 = {1, 2, 3, 4, 5, 6}

# >=检查⼀个集合是否是另⼀个集合的超集;如果一个集合S2中的每一个元素都在集合S1中,且集合S1中可能包含S2中没有的元素,则集合S1就是S2的一个超集,反过来,S2是S1的子集。 S1是S2的超集,若S1中一定有S2中没有的元素,则S1是S2的真超集,反过来S2是S1的真子集。
print(s1 >= s2)
print(s3 >= s1)

结果如下:
在这里插入图片描述

  • ">"检查⼀个集合是否是另⼀个集合的真超集
s1 = {1, 2, 3}
s2 = {3, 4, 5}
s3 = {1, 2, 3, 4, 5, 6}

# >检查⼀个集合是否是另⼀个集合的真超集
print(s1 >= s2)
print(s3 >= s1)

结果如下:
在这里插入图片描述

课后作业

作业一:a = {"name":"123","data":{"result":[{"src":"python1"},{"src":"python2"},{"src":"python3"}]}} 找到python1/python2/python3
a = {"name": "123", "data": {"result": [{"src": "python1"}, {"src": "python2"}, {"src": "python3"}]}}
for i in range(0, 3):
    python = a.get('data').get('result')[i].get('src')
    print(python)

结果如下:
在这里插入图片描述

作业二:有如下值列表[11,22,33,44,55,66,77,88,99,100], 将所有⼤于66的值保存⾄字典的第⼀个key的值中,将⼩于66值保存⾄第⼆个key的值中。
list1 = [11, 22, 33, 44, 55, 66, 77, 88, 99, 100]
dict1 = {'key1': [], 'key2': []}
for i in list1:
    if i > 66:
        dict1['key1'].append(i)
    elif i < 66:
        dict1['key2'].append(i)
print(dict1)


结果如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python编程语言中,有四种常用的集合数据类型,它们分别是列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)。列表是一种有序和可更改的集合,允许重复的成员。元组是一种有序且不可更改的集合,也允许重复的成员。字典是一个无序、可变且有索引的集合,其中没有重复的成员。而集合是一种无序和无索引的集合,没有重复的成员。这四种集合数据类型在Python中都有着不同的特点和用途。 在Python中,列表、元组和字符串都属于序列,它们的元素都可以通过编号进行访问。而字典则属于映射,其中的元素是以键值对的形式存在的。集合则不属于序列或映射中的任何一种,它是一种独立的数据类型,用于存储一组不重复的元素。 总结起来,Python中的列表(List)、元组(Tuple)、字典(Dictionary)和集合(Set)都是常用的集合数据类型,它们各自有着不同的特点和用途。列表是有序和可更改的集合元组是有序且不可更改的集合字典是无序、可变且有索引的集合集合是无序和无索引的集合。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [浅谈python四种集合数据类型—【列表、元组集合字典】](https://blog.csdn.net/QWERTYzxw/article/details/121479048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [python 元组集合字典](https://download.csdn.net/download/weixin_38603219/13752298)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值