当前位置: 首页 > news >正文

python基本数据类型 - 字典集合

引入

在内存中存储的数据可以是不同的数据类型。比如名字可以使用字符串存储,年龄可以使用数字存储,python有6种基本数据类型,用于各种数据的存储,分别是:numbers(数字类型)、string(字符串)、List(列表)、Tuple(元组)、Dictionary(字典).

本文介绍字典和集合。

字典类型(Dict)

定义

字典是可变类型的容器数据类型,可以存储任意数据类型的对象。{}内用逗号分隔开多个key:value,其中value可以是任意类型的值,key必须是不可变类型(字符串、数字、元组),一般是对value具有描述性质的字符串,键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。

# 创建字典的两种方式
dic = {'x': 'x', 'y': 'y'}  # 方式一
dic = dict(x='x', 'y'=y)  # 方式二

操作字典的方法

按照key存/取值

d={'k1':111}#针对赋值操作:key存在,则修改
d['k1']=222#针对赋值操作:key不存在,则创建新值
d['k2']=3333
print(d)  # {'k1': 222, 'k2': 333}

len()

字典的键值对个数,当有key重复的时候,只记一次。

d={'k1':111,'k2':2222,'k1':3333,'k1':4444}
print(d)  # {'k1': 4444, 'k2': 2222}
print(len(d))  # 2

成员运算

判断key是否包含在字典中

d={'k1':111,'k2':2222}
print('k1' in d)  # True
print(111 in d)   # False

删除操作

del

通用删除,没有返回值

d={'k1':111,'k2':2222}
del d['k1']
print(d)  # {'k2': 2222}

pop()

根据key删除元素,会返回被删除的key对应的value

d={'k1':111,'k2':2222}
res=d.pop('k2')
print(d)  # {'k1': 111}
print(res)  # 2222

popitem()

popitem随机删除一组键值对,将被删除的键值对以元组的方式返回

d={'k1':111,'k2':2222}  
res=d.popitem()
print(d)  # {'k1': 111}
print(res)  # ('k2', 2222)

keys() values() items()

在Python2中得到的分别是字典的所有key的列表、所有value的列表、所有键值对元组的列表,缺点是如果数据量非常大会很占用内存空间。

>>> d={'k1':111,'k2':2222}
>>> d.keys()
['k2', 'k1']>>> d.values()
[2222, 111]>>> d.items()
[('k2', 2222), ('k1', 111)]

在python3中得到的是会'下'出每个值的老母鸡,不会占用内存空间。

>>> d = {'name':'python','age':12}
>>> d.keys()
dict_keys(['name', 'age'])
>>> d.values()
dict_values(['python', 12])
>>> d.items()
dict_items([('name', 'python'), ('age', 12)])

循环遍历

遍历字典中的key

for k in d.keys():print(k)for k in d:print(k)

遍历字典的value

for value in d.values():print(value)

遍历字典中的键值对

for key, value in d.items():print(key, value)

其他内置方法

clear()

清空字典

d = {'name':'python','age':12}
d.clear()
pritn(d)  # {}

update()

用其他字典更新当前字典,存在的键值对进行覆盖,不存在的进行添加

d = {'name':'python','age':12}
d.update({'sex': ',male', 'name': 'tony'})
print(d)  # {'name': 'tony', 'age': 12, 'sex': ',male'}

get()

根据key取值,容错性高,弥补了使用[]取值时key不存在报错的问题

d = {'a':'gg','k':21}
# 弥补当key不存在时会报错的问题,不会报错,会返回None
print(d['k3'])  # 会报错
d.get('k3')    # 会返回none,容错性好

集合(Set)

定义

在{}内用 , 分隔开多个元素,

s = {}  # 空的花括号默认定义的是空字典
print(type(s))  # <class 'dict'>s = set()  # 通过这种方式得到的才是空集合

集合内的元素必须满足以下三个条件:

1.集合内的元素必须为不可变类型

s2 = {[1,2,3],1}  
print(s2)
# 会报错
TypeError: unhashable type: 'list'  # 不可哈希是可变类型

2.集合内元素无序

s = {1,2,'a',(1,4)}  # 底层是调用了set()功能
print(s)

3.集合内元素没有重复,可以进行去重操作

s = {1,1,1,1,1,2,2}
print(s)  # {1, 2}

类型转换

相当于底层调用for循环,取出每一个值放在集合中

# 对字符串进行转换,会自动将字符串中重复的去掉
s = set('hellollllop'))# 对列表进行转换
s = set([1,2,3,4,5,6])
# s = set([1,2,3,4,5,6,[1,2]])  会报错
# print(s)# 对字典进行转换
s = set({'k1':12,'k2':13}.items())
s = set({'k1':12,'k2':13})
s = set({'k1':12,'k2':13}.values())

操作集合的方法

关系运算

两个集合可以进行数学中的交集、并集等运算。

a = {1, 2, 3}
b = {2, 3, 4}

交集

求两个集合共同的值,两种方法

res = a & b  # {2, 3}
res1 = a.intersection(b)  # {2, 3}

并集

两个集合所有的值,重复的去掉, 两种方式

res = a | b  # {1, 2, 3, 4}
res1 = a.union(b)  # {1, 2, 3, 4}

差集

比如,取a集合独有的值,a为被减,两种方式

res = a - b  # {1}
res1 = a.difference(b)  # {1}

对称差集

两个集合分别独有的值组成一个新的集合,两种方式

res = a ^ b  # {1, 4}
res1.symmetric_difference(b)  # {1, 4}

父子集

判断一个集合是否是另一个集合的父集/子集,如果两个集合相等,互为父子集

s4 = {1,2,3}
s5 = {1,2}res = s4.issubset(s5)  # False 判断s4是否是s5的子集
res1 = s4.issuperset(s5)  # True 判断s4是否是s5的父集

去重操作

集合的去重操作有局限性,只能对不可变类型的数据进行去重,并且无法保证原来的顺序。针对可变类型数据的去重操作,需要自己编写代码完成功能。

# 去掉列表中重复的字典
l=[{'name':'lili','age':18,'sex':'male'},{'name':'jack','age':73,'sex':'male'},{'name':'tom','age':20,'sex':'female'},{'name':'lili','age':18,'sex':'male'},{'name':'lili','age':18,'sex':'male'},
]
new_l = []
for info in l:if info not in new_l:new_l.append(info)l = new_l
l = new_l

len()

集合中元素的数量

a = {1, 2, 3, 4}
print(len(a))  # 4

成员运算

判断某个元素是否包含在集合中,结果是True或者False

print(1 in a)  # True
print(5 not in a)  # True

循环遍历

for i in a:print(a)

其他内置方法

discard() remove() pop()

# discard()删除指定元素,元素不存在不会报错,do nothing
a = {1, 2, 3, 4}
a.discard(5)
print(a)  # {1, 2, 3, 4}
a.discard(4)
print(a)  # {1, 2, 3}# remove()删除指定元素,元素不存在报错
a.remove(4)  # KeyError: 4# pop()随机删除,返回被删除的元素
res = a.pop()
print(res)  # 1

update()

使用另一个集合对当前集合进行更新,自动进行去重

a = {1, 2, 3, 4}
a.update({1, 2, 3, 4, 5})
print(a)  # {1, 2, 3, 4, 5}

add()

为集合增加新的值

a.add(8)

isdisjoint()

判断两个集合是否完全独立,没有相同的部分

print(a.isdisjoint({1,2,3}))  # False

相关文章:

python基本数据类型 - 字典集合

引入 在内存中存储的数据可以是不同的数据类型。比如名字可以使用字符串存储&#xff0c;年龄可以使用数字存储&#xff0c;python有6种基本数据类型&#xff0c;用于各种数据的存储&#xff0c;分别是&#xff1a;numbers(数字类型)、string(字符串)、List(列表)、Tuple(元组…...

python数据类型总结

标准数据类型 Python 有以下几种标准数据类型&#xff1a; 整数&#xff08;int&#xff09;&#xff1a;表示整数值&#xff0c;如 1, -5, 0 等。浮点数&#xff08;float&#xff09;&#xff1a;表示小数值&#xff0c;如 3.14, -0.01, 1.0 等。字符串&#xff08;str&…...

TS内置类型总结

typeof 取对象身上的类型 const person {name: ,job: ,age:18 } type p typeof person ->> type p {name: string;job: string;age: number; }keyof取一个类型的属性明作为一个联合类型 const person {name: ,job: ,age: 18 } type p typeof person type k keyof p…...

Spring Cloud Alibaba: Gateway 网关过滤器 GatewayGatewayFilter factory (记录)

目录 AddRequestHeader GatewayFilter factory AddRequestHeadersIfNotPresent GatewayFilter factory AddRequestParameter GatewayFilter Factory AddResponseHeader GatewayFilter Factory CircuitBreaker GatewayFilter factory circuit breaker based on the status…...

Windows Server 2016版本说明

Windows Server 2016 Essentials edition Windows Server 2016 Essentials版是专为小型企业而设计的。它对应于Windows Server的早期版本中的Windows Small Business Server。此版本最多可容纳25个用户和50台设备。它支持两个处理器内核和高达64GB的RAM。它不支持Windows Serve…...

车载红外夜视「升温」

红外夜视赛道&#xff0c;正在升温。 本周&#xff0c;全球车载后视镜头部供应商Gentex宣布&#xff0c;领投以色列热成像技术初创公司ADASKY&#xff0c;后者在B轮融资中拿到了3000万美元。按照计划&#xff0c;Gentex将协助ADASKY将红外夜视技术推向汽车市场。 事实上&#x…...

ext3 文件系统的特点、优缺点以及使用场景

ext3&#xff08;Third Extended File System&#xff09;是 ext2 文件系统的后续版本&#xff0c;它在 ext2 文件系统的基础上增加了日志功能&#xff0c;以提高文件系统的可靠性和稳定性。下面是 ext3 文件系统的特点、优缺点以及使用场景&#xff1a; 特点&#xff1a; ext…...

rk3568 修改开机logo

rk3568 修改开机显示logo Android 显示 logo 的作用是为了标识应用程序或设备的品牌和身份。在应用程序中&#xff0c;logo 可以帮助用户快速识别应用程序&#xff0c;并与其他应用程序区分开来。在设备中&#xff0c;logo 可以帮助用户识别设备的品牌和型号&#xff0c;以及与…...

golang实现关键路径算法

关键路径算法&#xff08;Critical Path Method&#xff0c;简称CPM&#xff09;是一种用于项目管理的技术&#xff0c;主要用于计算项目中的关键路径和关键活动。关键路径是指项目中的最长路径&#xff0c;决定了项目的最短完成时间。关键活动是指在关键路径上的活动&#xff…...

Overcoming catastrophic forgetting in neural networks

目录 预备知识&#xff1a; 论文笔记 1. Introduction 2. Elastic weight consolidation 2.1 EWC allows continual learning in a supervised learning context 2.2 EWC allows continual learning in a reinforcement learning context 3. Conclusion 文章链接&#x…...

[Linux] Linux文件系统

&#x1f941;作者&#xff1a; 华丞臧. &#x1f4d5;​​​​专栏&#xff1a;【LINUX】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 文章目录 一、Linux文件系统1.1 磁盘1.2 inode1.3 软硬…...

有仰拍相机和俯拍相机时,俯拍相机中心和吸嘴中心的标定

俯拍相机中心和吸嘴中心的标定 文章目录 俯拍相机中心和吸嘴中心的标定 前言适用模型如下&#xff1a;一、使用一个标定片进行标定1.关键注意&#xff1a;2.标定步骤&#xff1a; 二、使用一个L型的工件1.关键注意&#xff1a;2.标定步骤&#xff1a; 总结 前言 在自动化设备领…...

【Vue学习笔记5】Vue3中的响应式:ref和reactive、watchEffect和watch

所谓响应式就是界面和数据同步&#xff0c;能实现实时更新。 Vue 中用过三种响应式解决方案&#xff0c;分别是 defineProperty、Proxy 和 value setter。Vue 2 使用的方案是 defineProperty API。Vue3中使用的方案是Proxy和value setter。 1. ref和reactive vue3中实现响应…...

自动化测试工具的基本原理以及应用场景

自动化测试工具是现代软件开发流程中必不可少的组成部分&#xff0c;它可以通过编写脚本或使用图形用户界面工具自动化测试过程&#xff0c;提高测试的效率和准确性。本文将介绍自动化测试工具的基本原理以及应用场景。 自动化测试工具的基本原理 自动化测试工具通常采用的原理…...

《Java虚拟机学习》 java代码的运行过程

1. Java文件转换 当我们保存java文件后&#xff0c;首先由编译器编译成class文件&#xff0c;然后通过Java虚拟机将class文件转换成字节码文件 2.Java虚拟机是怎么运行Java文件 首先将java文件加载到java虚拟机中&#xff0c;然后由虚拟机将类元信息存储在 虚拟机的方法区中。…...

关于Intel处理器架构中AVX2里Gather特性的说明

在 Intel Haswell 架构里引入了 Gather 特性。它使得CPU可以使用向量索引存储器编址从存储器取非连续的数据元素。这些gather指令引入了一种新的存储器寻址形式&#xff0c;该形式由一个 基地址寄存器&#xff08;仍然是通用目的寄存器&#xff09;和通过一个 向量寄存器&#…...

UNIX常用命令(C站最全,一文通关)

unix常见命令列举如下&#xff0c;除了看还要会用&#xff1a; ls - 列出目录下的文件 cd - 切换目录 pwd - 显示当前目录 mkdir - 创建目录 rm - 删除文件或目录 rmdir - 删除空目录 cp - 复制文件或目录 mv - 移动文件或目录,或重命名 cat - 显示文件内容 less - 分…...

Vue监听属性详细讲解

文章目录 定义要监听的属性定义 watch修改监听的属性值监听数组变化监听对象变化监听计算属性变化监听事件变化监听路由变化 在 Vue 中&#xff0c;可以使用 watch/$watch 方法监听数据、计算属性、事件和路由的变化&#xff0c;从而实现数据绑定、事件监听和路由控制等功能。需…...

网申形式一览:这三种投递方式,你了解吗?

银行校招是个滚动的过程&#xff0c;每家银行的网申期并不一致。想要在看重的银行网申期投出一份漂亮的简历&#xff0c;简历自身要“过硬”。是不是还有同学不清楚网申简历形式&#xff1f; 从如信银行考试中心了解到&#xff0c;银行网申&#xff0c;尤其是大行网申&#xff…...

vue项目将多张图片生成一个gif动图

当前做项目有一个需求是将多张图片生成一个gif动图的形式 类似下面图片几张图片叠加生成一个gif动图 图片涉及工作隐私&#xff0c;就不公开啦 我们要引入一个gif.js的引入包&#xff0c;但是他没有直接引入的方式&#xff0c;只能从官方下载文件包&#xff0c;下载地址&#…...

Unity Il2CppDumper原理与实战:解析元数据与二进制对齐

1. 这不是“破解工具”&#xff0c;而是Unity开发者该懂的二进制真相课 你刚在Unity Asset Store下载了一个功能惊艳的插件&#xff0c;却在打包iOS后发现部分逻辑失效&#xff1b;或者接手一个没有源码的旧项目&#xff0c;只有一堆 .dll 和 .so 文件&#xff0c;连主入口…...

串口通信粘包问题:成因深度解析与项目实战解决方案

在嵌入式开发、工业工控、上位机下位机交互项目中&#xff0c;串口&#xff08;RS232/RS485&#xff09;是最基础、最常用的通信方式。绝大多数开发者都遇到过这样的问题&#xff1a;串口接收的数据偶尔错乱、解析报错、数据拼接异常&#xff0c;单次接收的数据时而半包、时而多…...

Allegro PCB设计小技巧:如何让Route Keepout区域既能走线又能打过孔(附详细步骤图)

Allegro PCB设计实战&#xff1a;Route Keepout区域的灵活控制技巧 在高速PCB设计中&#xff0c;Route Keepout区域的管理常常让工程师陷入两难境地——元件封装自带的限制区域与实际布线需求产生冲突。特别是处理PCIE等高速信号时&#xff0c;这种矛盾尤为突出。传统做法要么完…...

机器学习驱动储氢材料发现:从特征工程到DFT/MD验证的完整指南

1. 项目概述与核心思路氢能被视为未来清洁能源体系的关键一环&#xff0c;但如何安全、高效、经济地储存氢气&#xff0c;一直是制约其大规模应用的瓶颈。在众多储氢技术路线中&#xff0c;固态储氢&#xff0c;特别是基于金属氢化物的储氢材料&#xff0c;因其高体积储氢密度和…...

论文润色深度测评:GPT-5.5 + Gemini 3.1 Pro:教你学会1+1>2的论文润色方法

各位同仁好,我是七哥。一个在高校里从事人工智能相关领域研究,钻研用大模型AI实操的学术人。可以和七哥交流学术写作或Gemini、GPT、Claude等大模型学术实操相关问题,多多交流,相互成就,共同进步。 2026年的科研圈,AI工具的选择已经从有没有变成了强不强,七哥评测了GPT…...

脉冲神经网络加速器设计与边缘计算优化

1. 脉冲神经网络加速器的设计挑战与突破在边缘计算领域&#xff0c;脉冲神经网络(SNN)正以其独特的生物启发特性引发新一轮技术变革。与传统人工神经网络(ANN)相比&#xff0c;SNN通过离散的脉冲信号传递信息&#xff0c;模拟生物神经元的工作机制&#xff0c;理论上可实现超低…...

告别枯燥理论!用Unity脚本生命周期与预制体玩转一个“会变身的敌人”

用Unity打造会变身的敌人&#xff1a;脚本生命周期与预制体的实战应用在游戏开发中&#xff0c;敌人AI的行为设计往往是新手开发者最感兴趣也最容易感到困惑的部分。Unity的脚本生命周期和预制体系统为这类需求提供了强大支持&#xff0c;但教科书式的讲解常常让学习者陷入枯燥…...

猫抓浏览器扩展终极指南:5分钟掌握全网视频资源下载技巧

猫抓浏览器扩展终极指南&#xff1a;5分钟掌握全网视频资源下载技巧 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否经常遇到心仪的视频无法…...

C语言(12) 指针的常见操作

指针的常见操作指针变量&#xff0c;有两方面的意思:一个指针指向的内容(数据值&#xff0c;一级)指针变量本身存储的数据 (地址值)#include <stdio.h>int main() {int a 10;int b 0 ;int c 50;int *p NULL;int *q NULL;p &a; // 对指针变量本身进行修改// 对指…...

三步破解百度网盘限速:免费获取真实下载链接的终极指南

三步破解百度网盘限速&#xff1a;免费获取真实下载链接的终极指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘几十KB的龟速下载而苦恼吗&#xff1f;想要彻…...