python03--元组-字典-集合

一、元组 tuple

数据形式

(数据1,数据2,数据3.....)

元组数据是不可修改,数据是有序的,支持下标获取数据

无法增加,修改,删除数据,只能进行数据查询

1-1 元组定义

# 元组定义
data_tuple1 = (1,2,3,4)
data_tuple2 = (1.2,2.34,3.15,4.26)
data_tuple3 = ('a','b','c','d')
data_tuple4 = (['asd','2213'],[123,3342])
data_tuple5 = ((12,345,74,21),('ndkla','123'))
print(data_tuple1)
print(data_tuple2)
print(data_tuple3)
print(data_tuple4)
print(data_tuple5)
​
# 元组只有一个元素数据时,需要加逗号
data_tuple6 = (10)
print(type(data_tuple6))
data_tuple7 = ('张三',)
print(type(data_tuple7))

1-2 元组数据取值

通过下标取值,或for循环遍历取值

元组数据不可修改,所以没有添加,删除,修改的方法

# 元组定义
data_tuple1 = (1,2,3,4)
data_tuple2 = (1.2,2.34,3.15,4.26)
data_tuple3 = ('a','b','c','d')
data_tuple4 = (['asd','2213'],[123,3342])
data_tuple5 = ((12,345,74,21),('ndkla','123'))
print(data_tuple1)
print(data_tuple2)
print(data_tuple3)
print(data_tuple4)
print(data_tuple5)
​
# 元组只有一个元素数据时,需要加逗号
data_tuple6 = (10)
print(type(data_tuple6))
data_tuple7 = ('张三',)
print(type(data_tuple7))
​
# 元组是有序数据,支持下标
print(data_tuple3[2])
print(data_tuple3[1:4])
​
# 容器都支持for循环取值
for i in data_tuple5:print(i)

1-3 元组数据查找

# 查找数据
i = data_tuple_str.index('python')
print(i)
​
# 查找出现的次数
num = data_tuple_str.count('a')
print(num)
​
​
# 计算元素个数
print(len(data_tuple_str))

元组的特性和字符串特性一样

但是元组能存储的数据类型比字符串多

二、字典 dict

字典数据格式

{k1:v1,k2:v2,k3:v3}

字典的本质就是给下标命名一个名字

user = [1,'张三',20,'男','篮球','1371111111','北京','23123@qq.com']

2-1 字典定义

# 字典定义
data_dict1 = {1:'hadoop',2:'python',3:'spark',4:'hadoop'}
data_dict2 = {'a':'hadoop','b':'python','c':'spark','d':'hadoop'}
print(data_dict1)
print(data_dict2)
# 字典中不要重复定义key值,保证key值唯一
data_dict3 = {'a':'hadoop','b':'python','c':'spark','a':'flink'}
print(data_dict3)
​
# 使用key的下标值进行value部分取值
print(data_dict1[2])
print(data_dict2['d'])
​
# 字典下标不支持切片操作
# print(data_dict1[1:4])

2-2 字典取值

字典的内容包含两部分 key 和 value

在字典取值时可以分别取出两部分的数据

  • 取value部分的数据

    • 方式1 通过key取value 一次只能取一个value值

      • data[key]

      • data.get(key)

    • 方式二 获取所有的value值

      • data.values()

# 取字典的value值
data_dict2 = {'a':'hadoop','b':'python','c':'spark','d':'hadoop'}
​
# 通过key取value
# 使用[] 取值,如果key不存在会报错
res = data_dict2['a']
print(res)
# get取值时  key不存在会返回一个None值
res2 = data_dict2.get('z')
print(res2)
​
# 将字典中value值全部取出
res3 = data_dict2.values()
print(res3)
  • 取key值部分

    • 获取所有key值

    • data.keys()

# 获取字典中的所有key值
res4 = data_dict2.keys()
print(res4)

2-3 字典的增加和修改数据

字典数据的增加和修改语法一样,针对va部分的数据进行增加和修改

data[key]=value 将key对应的value修改或增加新的值

key值不存在则是增加数据,key存在则是修改数据

# 增加或修改字典数据
data_dict = {'id':1,'name':'张三','age':20,'gender':'男'}
print(data_dict)
# key值存在,修改对应的value数据
data_dict['age'] = 22
print(data_dict)
​
# key不存在,则增加薪数据
data_dict['hobby'] = '篮球'
print(data_dict)

2-4 字典删除

del data[key]

# 删除字段数据
# 通过key确定删除的数据
data_dict = {'id':1,'name':'张三','age':20,'gender':'男'}
print(data_dict)
del data_dict['name']
print(data_dict)
​
# 清空数据
data_dict.clear()
print(data_dict)

2-5 for循环遍历

  • 格式

    • 字典for循环需要配合items方法

for 变量1,变量2 in data_dict.items():变量1接收key值部分变量2接受value部分
# 字典的for循环遍历
data_dict = {'id':1,'name':'张三','age':20,'gender':'男'}
​
for k,v in data_dict.items():print(k,v)

三、集合

数据形式

{数据1,数据2,数据3}

不重复的无序数据

集合的主要场景是去重

3-1 集合的定义

# 集合的定义
data_set1 = {1,22,13,4}
data_set2 = {1.1,2.35,3.16,4.28}
data_set3 = {'a','b','c','s','a','a'}
# data_set4 = {['a','b'],['c','s']}
# data_set5 = {{'id':1,'name':'张三'},{'id':2,'name':'李四'}}
data_set6 = {(1,2,3),('a','b')}
# data_set7 = {{1,2,3},{'a','b','c'}}
print(data_set1)
print(data_set2)
print(data_set3)
# print(data_set4)
# print(data_set5)
print(data_set6)
# print(data_set7)

有序的数据可以通过下标和for循环取值

list[0]

str[0]

tuple[0]

dict[key]

无序数据只能通过for循环取值

# 集合取值
data_set_str = {'hadoop', 'hive', 'oozie', 'spark', 'python', 'hive'}
for i in data_set_str:print(i)

3-2 集合增删改

  • 增加数据

    • add

  • 删除

    • remove

    • clear

  • 修改

    • update

    • 用于修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略。

# 增加的数据
data_set.add('hive')
print(data_set)
# 删除数据
data_set.remove('hadoop')
print(data_set)
# 更新数据
data_set.update(['flink222'])
print(data_set)

集合类型的数据主要作用时去重

将数据转为set集合后最将重复数据去除

四、公共方法

4-1 容器类型之间的转化

str(数据) 将数据转为字符串

list(数据) 将数据转为列表

set(数据) 将数据转为集合

tuple(数据) 将数据转为元组

# 容器类型之间的转化
data_str = 'itcast'
data_list = ['hadoop','hive','spark','python','list','python']
data_tupe = ('hadoop','hive','spark','python','tuple','hadoop')
data_set = {'hadoop','hive','spark','python','set'}
​
# 字符串
print(list(data_str))
print(tuple(data_str))
print(set(data_str))
​
# 元组操作
print(str(data_tupe))
print(list(data_tupe))
print(set(data_tupe))
​
# 列表
print(str(data_list))
print(tuple(data_list))
print(set(data_list))
​

4-2 运算符

运算符描述支持的容器类型
+合并字符串、列表、元组
*复制字符串、列表、元组
in元素是否存在字符串、列表、元组、字典,集合
not in元素是否不存在字符串、列表、元组、字典,集合
# + *
data_str1 = 'itcast'
data_str2 = 'python'
​
data_list1 = ['a', 'b']
data_list2 = ['c', 'd']
​
data_tuple1 = ('w', 'q')
data_tuple2 = ('e', 'f')
​
data_set1 = {1, 2, 3}
data_set2 = {4, 5, 6}
​
data_dict1 = {'id': 1, 'name': '张三'}
data_dict2 = {'id': 2, 'name': '李四'}
​
# + 运算符
data_str1_str2 = data_str1 + data_str2  # 字符串+ 是拼接字符串
print(data_str1_str2)
​
data_list1_list2 = data_list1 + data_list2  # 列表+ 合并列表数据
print(data_list1_list2)
​
data_tuple1_tuple2 = data_tuple1 + data_tuple2  # 元组+ 合并元组数据
print(data_tuple1_tuple2)
# 集合数据不支持 + 运算
# data_set1_set2 = data_set1+data_set2
# print(data_set1_set2)
# 字典不支持+运算
​
# * 运算符   数据 * 数值
data_str1_new = data_str1 * 3
print(data_str1_new)
data_list1_new = data_list1 * 3
print(data_list1_new)
data_tuple1_new = data_tuple1 * 3
print(data_tuple1_new)
​
# 集合和字典不支持 * 运算符
# data_set1_new = data_set1 * 3
# print(data_set1_new)
​
# 判断元素是否在容器内
if 'i' in data_str1:print('在字符串中')
else:print('不在字符串中')
​
​
if 'a' in data_list1:print('在列表中')
else:print('不在列表中')
​
if 'a' in data_set1:print('在集合中')
else:print('不在集合中')
​
# 判断key是否在字典中
if 'id' in data_dict1:print('key在列表中')
else:print('key不在列表中')

4-3 通用函数

编号函数描述支持的容器类型
1len()计算容器中元素个数字符串、列表、元组、字典,集合
2del删除列表和字典
3max()返回容器中元素最大值列表、元组、字典.values(),集合
4min()返回容器中元素最小值列表、元组、字典,集合
5sum()求和列表、元组、字典,集合
6count()统计元素在容器内出现的次数字符串、列表、元组、
7enumerate()给容器显式增加下标值,主要是在for循环场景中字符串、列表、元组、字典,集合
# 容器通用函数
data_str = 'itcast'
data_list = ['hadoop','spark','python','list','python']
data_tuple = ('hadoop','hive','spark','python','tuple','hadoop')
data_set = {'hadoop','hive','spark','python','set','presto','doris'}
data_dict = {'id':1,'name':'张三'}
# len 计算容器元素的个数 
print(len(data_str))
print(len(data_list))
print(len(data_tuple))
print(len(data_set))
print(len(data_dict))
​
# count 统计元素在容器内出现的次数
print('--------count--------------')
num = data_str.count('t')
print(num)
​
num2 = data_list.count('hadoop')
print(num2)
​
num3 = data_tuple.count('hadoop')
print(num3)
​
# 集合和字典不支持count方法
# num4 = data_set.count('hadoop')
# print(num4)
​
​
# 统计字典中value值出现次数
value_data = data_dict.values()
print(list(value_data).count('张三'))
​
# max min  sum 处理数值数据
print('---------max----------')
data_list2 = [1,22,15,3]
data_tuple2 = (15,10,33,6)
data_set2 = {28,9,15,12}
data_dict2 = {'id':1,'age':20}
print(max(data_list2))
print(max(data_tuple2))
print(max(data_set2))
print(max(data_dict2.values()))
print('------min-----')
print(min(data_list2))
print(min(data_tuple2))
print(min(data_set2))
print(min(data_dict2.values()))
print('-----sum-----------')
print(sum(data_list2))
print(sum(data_tuple2))
print(sum(data_set2))
print(sum(data_dict2.values()))
print('--------平均数----------')
print(sum(data_list2)/len(data_list2))
​
​
# 元素数据的删除
print('--------------del------')
# del data_str[0]
# print(data_str)
print(data_list)
del data_list[0]
print(data_list)
​
# print(data_tuple)
# del data_tuple[0]
# print(data_tuple)
​
print(data_dict)
del data_dict['id']
print(data_dict)
# enumerate枚举方法的使用
# 容器可以通过for循环遍历数据
data_str = 'pyhton'
for i in data_str:# 在遍历数据时,只会获取到每个元素数据,无法获取对应的下标值print(i)
​
# 使用枚举方法获取对应数据的下标值
for i in enumerate(data_str):print(i)
​
​
data_list = ['hadoop','spark','hive','python','java']
for i in enumerate(data_list):print(i)
​
​
data_tuple = ('flink','presto','kafka','doris','hdfs')
for i in enumerate(data_tuple):print(i)
​
​
data_set = {'es','ds','yarn','mr','hdfs'}
for i in enumerate(data_set):print(i)print(type(i))
​
​
data_dict = {'id':1,'name':'张三'}
for i in enumerate(data_dict):print(i)
​

五、推导式

使用一行代码生成对应容器数据

列表推导式

字典推导式

  • 生成一个1-100列表数据

    • [1,2,3,4,5,6,7,8,9,10,.......]

 # 列表推导式
# 生成1--100的列表数据
data_list =[]
for i in range(1,101):data_list.append(i)
print(data_list)
​
​
# 列表推导式 使用一行代码实现列表生成
# [添加的值  值处理的逻辑]
print([i for i in range(1,101)])
  • 字典推导式

    • 将符合kv数据结构改成字典类型

      • {k:v}

data_str = 'id=1;name=张三;age=20;gender=男'
# {'id':1,'name':'张三','age':20,'gender':'男'}
# 1-现将kv结构的数据进行拆分一个个单独元素  id=1  name=张三
data_split = data_str.split(';')
# 2-将kv数据进一步拆分得到key值和value值
data_dict = {}
for data in data_split:key = data.split('=')[0]value = data.split('=')[1]# 3-将数据添加到字典data_dict[key] = value
print(data_dict)
​
​
# 字典推导式  使用一行代码
# {k:v kv数据的处理逻辑}
print({data.split('=')[0]:data.split('=')[1]  for data in data_str.split(';')})

容器数据中使用最多的容器是 字符串,列表,字典

字段的split和replace

字典的数据修改和添加

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

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

相关文章

Linux基础命令常见问题解决方案

Linux 基础命令常见问题解决方案 在Linux的日常使用中,用户经常会遇到各种各样的问题。本文旨在提供一个关于Linux基础命令的常见问题及其解决方案的全面指南。我们将覆盖30种不同的错误场景,并给出具体的解决步骤和示例,帮助初学者快速定位…

Wireshark 搜不到字符串?

一个原因是pcap里没有这个字符串, 另一个原因可能是ctrlF之后,选择搜索的地方不对,或者是编码方式选择的不对。 上面图片的第一个下拉框是要搜索的一个范围,是在哪一个panel搜索,范围说明在下面这个链接有详细说明&…

面试2. c++面试(领为军融)

1本段代码是否存在问题&#xff1f;. #include <iostream> void main() {for (unsigned short idx 0;idx <65535; idx){std::cout << idx <<std::endl;}std::cout<<"Execution completed!"<<std::endl; }解析&#xff1a; (1)可靠…

Java | Leetcode Java题解之第100题相同的树

题目&#xff1a; 题解&#xff1a; class Solution {public boolean isSameTree(TreeNode p, TreeNode q) {if (p null && q null) {return true;} else if (p null || q null) {return false;}Queue<TreeNode> queue1 new LinkedList<TreeNode>();…

【QGIS入门实战精品教程】10.6:QGIS制作酒店分布热力图

相关阅读: ArcGIS实验教程——实验四十二:ArcGIS密度分析(核密度、点密度、线密度) 【ArcGIS微课1000例】0086:基于七普人口数据的人口密度分析与制图 ArcGIS实验教程——实验二十四:人口密度制图 文章目录 一、加载酒店分布数据二、热力分析一、加载酒店分布数据 订阅专…

【数据结构与算法 | 基础篇】双向循环链表模拟双端队列

1. 前言 前文我们分别用链表&#xff0c;数组来实现了栈和队列. 而双端队列可以替代栈和队列并达到二者的效果.我们知道&#xff0c;栈的特点是只在栈顶操作元素&#xff0c;队列的特点是在队头pop元素&#xff0c;在队尾push元素. 而双端队列可以在队头和队尾分别进行pop与pu…

Python 新手最容易踩的坑

Python新手最容易踩的坑 缩进错误忘记引入模块使用未定义的变量不理解变量作用域字符串格式化错误乱用关键字多余的符号本期图书推荐&#xff1a;Python算法小讲堂---39个算法案例带你玩转Python内容简介获取方式 在学习 Python 的过程中&#xff0c;新手往往会遇到一些常见的陷…

如何用pyecharts工具制作动态变化柱状图

# # # 导入柱状图的包 # from pyecharts.charts import Bar # # # 创建一个柱状图 # bar1 Bar() # bar1.add_xaxis(["中国", "美国", "英国"]) # bar1.add_yaxis("1900年GDP总量", [10, 20, 30]) # # # 生成图 # bar1.render() # # #…

5月23日零钱兑换+组合总和Ⅳ

377.组合总和Ⅳ 给你一个由 不同 整数组成的数组 nums &#xff0c;和一个目标整数 target 。请你从 nums 中找出并返回总和为 target 的元素组合的个数。 题目数据保证答案符合 32 位整数范围。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3], target 4 输出&#xf…

全免费的数据恢复工具哪个好?分享2024年性价比超高的12款数据恢复软件!

当您丢失重要文件时&#xff0c;您应该可不想遇到措手不及的情况吧&#xff1f;相反&#xff0c;您需要在系统中使用一些可靠的数据恢复软件&#xff0c;但是全免费的数据恢复工具哪个好呢&#xff1f;别担心&#xff0c;本文将帮助您选择最适合您的解决方案。 如何挑选一款合适…

后端开发面试题3(附答案)

前言 在下首语言是golang,所以会用他作为示例。 原文参见 @arialdomartini的: Back-End Developer Interview Questions 设计模式相关问题 1. 请用一个例子表明,全局对象是邪恶的存在。 在Go语言中,虽然没有传统意义上的全局变量(全局对象),但可以通过包级别的变量来模…

【Rust日报】嵌入式 Rust:一份简化指南

EvilHelix 编辑器 EvilHelix 是一个采用 Vim 风格的模态编辑器&#xff0c;旨在提供快速且高效的编辑体验。它是 Helix 编辑器的一个分支&#xff0c;增加了 Vim binding&#xff0c;同时积极同步上游的特性&#xff0c;兼备了 Vim 和 Hexli 的优点&#xff1a; Vim 风格的模态…

blkio限制容器iops

/sys/fs/cgroup/blkio/blkio.throttle.read_iops_device /sys/fs/cgroup/blkio/blkio.throttle.write_iops_device lsblk 查看设备 kubectl get pod xxx -oyaml | grep -i id find / -name blkio.throttle.write_iops_device | grep id

栈和队列OJ题详解

一.有效的括号&#xff1a; 20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09; 首先拿到这个题目&#xff0c;我的第一个思路是利用双指针来走&#xff0c;看看是不是匹配的 但是这种情况就把双指针的这个思路直接pass了&#xff0c;明明是匹配的括号&#xff0c;用双指…

1.3 Windows 的 CLion 开发环境安装

目录 1 C 语言的那些事 2 开发环境安装及新建项目 2.1 安装 MinGW 编译器 2.2 安装 CLion 开发环境

Android Audio基础——AudioFlinger回放录制线程(七)

AndioFlinger 作为 Android 的音频系统引擎,重任之一是负责输入输出流设备的管理及音频流数据的处理传输,这是由回放线程 PlaybackThread 及其派生的子类和录制线程 RecordThread 进行的。 一、基础介绍 1、关系图 ThreadBase:PlaybackThread 和 RecordThread 的基类。 Re…

人工智能最新的新闻动态

一、AI交互内容创新国际竞赛启动 主办单位&#xff1a;南京市科协启动时间&#xff1a;2024年5月26日目的与意义&#xff1a;鼓励全球科技人才参与AI创新&#xff0c;拓宽南京与海外科技人才的交流渠道&#xff0c;注入国际化活力&#xff0c;推动AI技术创新应用&#xff0c;挖…

react diff 原理

React的Diff算法&#xff08;也称为React Diff原理或React Diffing策略&#xff09;是React框架中用于优化DOM更新的核心机制。其核心思想是通过比较新旧Virtual DOM的差异&#xff0c;仅更新有变化的部分&#xff0c;以提高渲染效率。以下是React Diff算法的主要原理和策略&am…

【linux】多线程(2)

文章目录 线程的应用生产消费者模型自制锁生产消费队列成员参数生产函数消费函数 任务处理方式主函数 POSIX信号量sem_wait()sem_post() 线程池应用场景示例 单例模式饿汉实现单例 吃完饭, 立刻洗碗, 这种就是饿汉方式. 因为下一顿吃的时候可以立刻拿着碗就能吃饭.懒汉实现单例…

visual studio code生成代码模板

编写需要生成代码片段的代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"wid…