Python基础 P7 字典和集合

news2024/11/23 22:18:15

文章目录

  • Python基础 P7 字典和集合
    • 字典
      • 字典基础
      • 内置函数
        • 增操作fromkeys()
        • 删操作pop()、popitems()和clear()
        • 改操作update()
        • 查操作get()和in/not in
        • 视图对象keys(),values(),items()
        • 拷贝copy()
        • setdefault()
      • 其他函数
        • 键值数量len()
        • 列表转换list()
        • 迭代器转换iter()
        • 逆向序列reversed()
      • 嵌套与推导式
        • 字典嵌套
        • 字典推导式
    • 集合
      • 集合基础
      • 内置函数
        • 复制copy()
        • 集合关系issubset() 、issuperset()和isdisjoint()
        • 不可变集合frozenset
        • 删操作pop()和clear()
    • 进阶练习
    • 更多内容

Python基础 P7 字典和集合

在这里插入图片描述

字典

在这里插入图片描述

字典是python中唯一实现了映射关系的内置关系,字典活跃在python程序的背后,即便你的源码里并没有直接用到它

映射关系是一种程序设计技术,用于实现面向对象编程语言里不同类型的数据之间的转换,从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”;在数学术语上,指两个元素集之间元素相互“对应”的关系
映射类型区别于序列类型,序列类型以数组的形式存储,通过索引的方式来获取相应位置的值,一般索引值与对应位置存储的数据是毫无关系的

字典基础

python中的字典把这个字(或单词)称为“键”(key),把其对应的含义称为“值(value)”;python的字典在有些地方称为哈希(hash),有些地方称为关系数组


创建和访问字典

创建字典需要使用大括号{ }
内部字典由“”和“”共同构成,由:区分
每一对键值组合称为“

字典的键值必须独一无二,但值可以相同,值可以取任何数据类型,但必须是不可变得,如字符串、数或元组

方法一:根据映射关系创建

dict1 = {'键1':1, '键2':2, '键3':3}

方法二:根据dict()内置函数创建

dict1 = dict{1 =1,2 =2,3 =3}

方法三:直接给字典赋值(相当于添加与修改)

dict1 = {'键1':1, '键2':2, '键3':3}
dict1['键4'] =4
dict2['键1'] =5

方法四:使用zip()进行创建

dict1 = dict{zip(['键1', '键2', '键3'],['值1', '值2', '值3'])}

在这里插入图片描述

# 创建一个空字典
dict1 = {}
print(dict1)

# 方法1:使用大括号创建字典
dict2 = {'a': 1, "b": 2, "c": 3}
print(dict2)print(dict2['a'], dict2['b'], dict2['c'])

# 方法2:使用内置函数创建字典
dict3 = dict(d=4, e=5, f=6)
print(dict3)
print(dict3['d'], dict3['e'], dict3['f'])

# 方法3:对字典进行修改和添加实现字典创建
dict3['f'] = 66
print(dict3)
dict3['g'] = 7
print(dict3)

# 方法4:使用zip()对字典进行创建
dict4 = dict(zip(['g','h','i'],[8,9,10]))
print(dict4)

在这里插入图片描述

内置函数

增操作fromkeys()

fromkeys()方法用于创建并返回一个新的字典,它有两个参数,第一参数是字典的键,第二参数是可选的,是传入键对应的值,如果不提供,那么默认是None

在这里插入图片描述

dict1 = {}
dict1 = dict1.fromkeys((1, 2, 3))
print(dict1)

dict2 = {}
dict2 = dict2.fromkeys((1, 2, 3), "a")
print(dict2)

在这里插入图片描述

删操作pop()、popitems()和clear()

pop是给定键弹出对应的值,而popitem是弹出一个项
可以使用clear来清除字典

在这里插入图片描述

dict1 = dict(a=1, b=2, c=3, d=4, e=5)

print(dict1.pop('b'))
print(dict1)

print(dict1.popitem())
print(dict1)

dict1.clear()
print(dict1)

在这里插入图片描述

改操作update()

update可以用来更新字典

在这里插入图片描述

dict1 = dict(a=1, b=2, c=3, d=4, e=5)
print(dict1)

dict1.update(d=44)
print(dict1)

在这里插入图片描述

查操作get()和in/not in

get()可以更宽松的访问字典项,当键不存在的时候不会报错, 也可以在第二个参数位置设置不存在的返回值

可以使用成员资格操作符来判断键是否存在,使用in或not in

在这里插入图片描述

dict1 = dict(a=1, b=2, c=3, d=4, e=5)
print(dict1.get('a'))
print(dict1.get('f'))
print(dict1.get('f', '不存在'))

print('a' in dict1)
print('f' in dict1)

在这里插入图片描述

视图对象keys(),values(),items()

keys用于返回字典中的
value用于返回字典中所有的
items用于返回字典里所有的

在这里插入图片描述

dict1 = dict(a=1, b=2, c=3, d=4, e=5)
print(dict1.keys())
print(dict1.values())
print(dict1.items())

在这里插入图片描述

拷贝copy()

copy方法是用于浅拷贝整个字典

在这里插入图片描述

dict1 = dict(a=1, b=2, c=3, d=4, e=5)
dict2 = dict1.copy()

print('dict1 id:', id(dict1))
print('dict2 id:', id(dict2))

print('dict1:', dict1)
print('dict3:', dict2)

在这里插入图片描述

setdefault()

setdefault方法与get有点相似,但是,setdefault在字典中找不到相应的键时会自动添加

在这里插入图片描述

dict1 = dict(a=1, b=2, c=3, d=4, e=5)

print(dict1.setdefault('a'))

print(dict1)
print(dict1.setdefault('f'))
print(dict1)

在这里插入图片描述

其他函数

键值数量len()

使用len函数来获取字典的键值对数量

在这里插入图片描述

dict1 = {'a': 1, "b": 2, "c": 3}
print(len(dict1))

在这里插入图片描述

列表转换list()

通过list(dict1)可以将字典的键转化为列表,可以使用list(dict1.values)将值转换为列表

在这里插入图片描述

dict1 = {'a': 1, "b": 2, "c": 3}
print(list(dict1))
print(list(dict1.values()))

在这里插入图片描述

迭代器转换iter()

iter会将字典的键构成一个迭代器

在这里插入图片描述

dict1 = {'a': 1, "b": 2, "c": 3}
e = iter(dict1)
print(next(e))
print(next(e))
print(next(e))
print(next(e))

在这里插入图片描述

逆向序列reversed()

reversed可以将字典的键进行逆向操作

在这里插入图片描述

dict1 = {'a': 1, "b": 2, "c": 3}
print(list(reversed(dict1)))
print(list(reversed(dict1.values())))

在这里插入图片描述

嵌套与推导式

字典嵌套

字典也可以嵌套,字典里面可以嵌套字典字典里面也可以嵌套列表

在这里插入图片描述

dict1 = {'a': {'a1': 1, 'a2': 2}, "b": {'b1': 3, 'b2': 4}, "c": {'c1': 5, 'c2': 6}}
dict2 = {'a': [9, 8, 7], "b": [6, 5, 4], "c":  [3, 2, 1]}
print(dict1['b']['b2'])
print(dict2['c'][0])

在这里插入图片描述

字典推导式

在这里插入图片描述

dict1 = {x: ord(x) for x in "Cage"}
print(dict1)

在这里插入图片描述

集合

在这里插入图片描述

集合基础

如果用大括号括起来,又没有体现出映射关系,那么python就会认为这堆数据是一个集合而不是映射,而且集合的的内容是唯一的这一点跟字典的键值是一样的;集合是无序的,也就是不能试图去索引集合中的某一个元素。

集合创建、访问、添加和删除

在这里插入图片描述

# 直接创建集合
set1 = {1, 2, 3, 4, 4, 4}
print(set1)

# 内置函数创建集合
set2 = set(['c', 'a', 'g', 'e'])
print(set2)
# in/not in
print(2 in set1)
print('b' in set2)

# add和remove
set1.add(5)
print(set1)
set2.remove('a')
print(set2)

在这里插入图片描述

内置函数

复制copy()

复制集合的方法copy

在这里插入图片描述

a = set("Cage")
print(a)
b = a.copy()
print(b)

在这里插入图片描述

集合关系issubset() 、issuperset()和isdisjoint()

issubset() 判断该集合是否为另一个集合的子集
issuperset() 判断该集合是否为另一个集合的超集
isdisjoint() 用来判断两个集合之间是否相关

在这里插入图片描述

a = set("Cage")
print(a.issubset("Cage Hello"))
print(a.issuperset("Ca"))
print(a.isdisjoint(set("C")))

在这里插入图片描述

不可变集合frozenset

有时候希望集合中的数据具有稳定性,也就是说,像元组一样,不能随意地增加或删除集合中的元素。那么可以定义成不可变集合。

在这里插入图片描述

set1 = frozenset({1, 2, 3, 4, 4, 4})

print(set1)set1.add(5)
print(set1)

在这里插入图片描述

删操作pop()和clear()

pop()用于随机从集合中弹出一个元素
clear()将集合清空

在这里插入图片描述

a = set("Cage")
print(a.pop())
print(a.clear())

在这里插入图片描述

进阶练习

更多内容

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

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

相关文章

【初识C语言(1)】变量和常量

文章目录 1. 局部变量和全局变量2. 变量的作用域和生命周期3. 常量 生活中的有些值是不变的(比如:圆周率,性别,身份证号码,血型等等)有些值是可变的(比如:年龄,体重&…

GitHub 上数百万个存储库可能容易被劫持

GitHub 上数以百万计的企业软件存储库很容易受到重新劫持,这是一种相对简单的软件供应链攻击,威胁行为者将依赖于特定存储库的项目重定向到恶意攻击。 研究人员在本周的一份报告中表示,这个问题与 GitHub 用户或组织更改项目名称或将其所有权…

chatgpt赋能python:Python自动执行程序:提高效率,降低出错率的利器

Python自动执行程序:提高效率,降低出错率的利器 随着科技的进步和信息技术的发展,人们越来越依赖计算机和自动化技术来完成繁琐的工作。自动化编程技术的应用也越来越广泛,其中Python自动执行程序被广泛使用。 Python自动执行程…

图像处理的两种变换:2D-DWT和Gabor变换

pywt官方API文档: 2D Forward and Inverse Discrete Wavelet Transform 目录 1. 二维离散小波变换2D-DWT 1.1 二维离散小波变换的相关公式 1.2 使用pywt实现2D-DWT 2. 窗口傅里叶变换Gabor 1. 二维离散小波变换2D-DWT DWT(Discrete Wavelet Transformation)代…

c语言通讯录——静态版本(带详细文字解释)

1.定义用于存储一个人信息的结构体 typedef struct PeoInfo {char name[NAME_MAX];int age;char sex[SEX_MAX];char addr[ADDR_MAX];char tele[TELE_MAX]; }PeoInfo;定义了一个名为 “PeoInfo” 的结构体(struct)类型,用于存储有关一个人的信…

MIAOYUN“一云多芯”全栈信创解决方案获认可!

信创,即信息技术产业创新,是数据安全、网络安全的基础,也是新基建的重要组成部分。信创产业发展已经成为经济数字化转型、提升产业链发展的关键,促进信创产业在本地落地生根,带动传统IT信息产业转型,构建区…

使用POI将excel文件导入到数据库

概要 随着时代变化,有的需求也会越来越多,例如:有的文件上千条数据需要导入数据库不可能手动一条条导入吧?太浪费时间了!所以需要编写程序让程序来导入 整体架构流程 我这里使用的是springbootmybatisMVC的项目架构…

接口测试流程、测试点和测试工具

目录 前言: 一、什么情况下开展接口测试? 二、如何进行接口测试 三、接口测试用例设计 四、接口测试工具 前言: 接口测试是一种重要的测试类型,用于验证应用程序接口的功能、性能和可靠性。 一、什么情况下开展接口测试&am…

AtomicInteger源码

介绍 Atomic包是java.util.concurrent下的另一个专门为线程安全设计的Java包,包含多个原子操作类。这个包里面提供了一组原子变量类。其基本的特性就是在多线程环境下,当有多个线程同时执行这些类的实例包含的方法时,具有排他性,…

大坝渗流监测的目的和意义

​  大坝渗流监测是对坝体内渗流场进行的监测,是确保大坝安全运行的重要手段。通过监测,可以掌握渗流场的变化规律,并根据渗流场的变化趋势预测坝体、坝基可能出现的问题。通常根据渗漏量与渗流量两个指标来进行监测,即渗漏量小…

【ndarry的基本操作】——numpy03

目录索引 基本索引和切片:普通索引:省略索引:多省略索引:间隔索引: 形态变换操作:reshape():resize():transpose():*通过参数进行转置:* flatten()&#xff1…

usb转8路串口模块

开源USB转8路串口PCB设计 文章目录 开源USB转8路串口PCB设计1. 简介2. 说明3. 一种跨电脑跨USB口的端口号自动识别方法4.开源地址 今天给大家介绍一款USB转8路串口的PCB设计,并提供一种跨电脑跨USB口的端口号自动识别方法。 1. 简介 芯片采用沁恒的CH348Q&#xff…

Kotlin Jetpack Compose - 实现Tab布局

Tab布局是一种常见的UI设计,它允许用户在不同的视图或数据集之间切换。我们将使用Jetpack Compose的 TabRow 和 ScrollableTabRow 组件来实现这个布局。 一、基本的Tab布局——TabRow 二、滚动的Tab布局——ScrollableTabRow 组件 三、自定义Tab组件 一、基本的T…

音视频数据处理-H265/HEVC视频码流分析

一、H265概述 H265/HEVC(Hight Efficiency Video Coding)是由ITU-T和ISO/IEC两大组织在H264/AVC的基础之上推出的新一代高效视频编码标准,主要为应对高清和超高清视频在网络传输和数据存储方面带来的挑战。上一篇文章对H264/AVC视频码流进行…

chatgpt赋能python:Python自动化定位元素的方法详解

Python自动化定位元素的方法详解 作为一名Python编程经验丰富的工程师,我经常需要用到自动化定位元素的方法。今天,我想与大家分享一下在Python中如何自动化定位元素,以帮助那些想要进行Web自动化测试的开发者们。 什么是自动化定位元素 在…

chatgpt赋能python:Python聊天界面:开发高效且易于使用的消息应用

Python聊天界面:开发高效且易于使用的消息应用 Python是一种十分流行的编程语言,最近几年来,这种语言在GUI应用程序开发方面也越来越受欢迎。在本篇文章中,我们将介绍如何使用Python开发一个高效且易于使用的消息应用程序——聊天…

chatgpt赋能python:Python自动化定位——解放SEO员工的双手

Python自动化定位——解放SEO员工的双手 SEO(Search Engine Optimization)是现代数字营销中必不可少的一环。面对庞大的网络世界,SEO员工们日复一日地进行着关键词排名、页面跳转、链接检测等重复且繁琐的工作。而Python作为一种功能强大、易…

chatgpt赋能python:Python自动执行:提高效率,增强灵活性

Python自动执行: 提高效率,增强灵活性 随着时代进步,人们日常生活中越来越依赖计算机和网络技术,而在编程领域,Python语言作为一种高效、可读性好、易学易用的语言,得到了广泛应用。其中,Pytho…

【算法之栈与队列I】leetcode239. 滑动窗口最大值

232.用栈实现队列 力扣题目链接 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并…

使用netwox 的实例进行ARP地址解析协议分析【网络工程】(保姆级图文)

目录 1. netwox 构造 ARP 报文使用 netwox 工具构造 ARP 包。1) 查看 netwox 所在主机默认的 ARP 包的相关信息,执行命令如下:2) 构造 ARP 请求包,请求目标主机 192.168.43.95,执行命令如下:3) 为了验证构造的 ARP 请求…