首页 > 编程语言 >【python】字典(Dictionary)与集合(Set)

【python】字典(Dictionary)与集合(Set)

时间:2024-04-02 10:32:02浏览次数:25  
标签:Set name Dictionary python dic 集合 摆烂 print 字典

字典是一种键值对的数据结构,而集合是一种无序、元素不重复的数据结构。

目录

前言

正文

一、字典(dict)

        1、字典的定义

        注意:

        2、字典的查询

        2.1 语法:字典名['键名']

        2.2 语法:字典名.get('键名')

        3、删除

        3.1 del删除指定键值对

        3.2 pop根据指定key删除键值对

    3.3 clear清除字典里所有键值对,返回一个空字典

        4、改/增字典

        4.1 字典[键名] = 值:键名存在就修改字典,键名不存在则新增一个键值对

        4.2 字典.update({键值对})  用于添加一个或多个键值对,或者说是字典的拼接直接添加字典

         5、字典的长度len返回有多少对键值对

        6、成员运算符 in  和 not in  ,判断某个元素的是否是字典的key

        7、获取字典的键或值

        7.1 keys/values 分别获取键/值进行返回

        7.2  字典.items()  同时获取键和值

二、集合

        1、集合定义

        注意:

         2、增加

        2.1 集合.add(元素) 添加元素,整体添加

        2.2 集合.update(可迭代对象)  分散添加

        3、删除集合

        3.1 集合.remove 删除指定的元素,如果集合有就会删除,没有会报错

        3.2 集合.discard() 删除指定元素,有就删除,没有不会发生任何改变

        4、求集合的长度len()

         5、成员运算符in和not in

        6、集合的关系运算符 

        1、交集 &:a&b 输出集合a和集合b中都包含的元素

        2、并集/合集 |:a|b 输出集合a和集合b中包含的所有元素

        3、差集 -:a-b 输出集合a中包含而集合b中不包含的元素

总结


前言

        字典(Dictionary)通常用于需要根据某个唯一标识(键)来检索相关数据(值)的情况,例如存储用户信息、配置项等。

        集合(Set)则常用于存储一组唯一的元素,可以用于去除重复元素、快速查找是否存在某个元素等场景,比如统计唯一单词数、过滤重复数据等。


正文

一、字典(dict)

        1、字典的定义

        作用:用于存储多个数据,每一个数据都又唯一的键(key)进行对应,不支持下标操作,是可迭代对象

        格式:{"键名1":"值1","键名2":"值2","键名3":"值3".....}     由键值对组成

        注意:

                1)、字典的key不可以是列表、字典、集合等可变类型,只能是字符串、数值、元组等不可变类型,但是值可以是任意类型

                2)、字典的key具备唯一,在字典里key不能被重复,如果重复那后面的值,会覆盖前面的值

                3)、字典可以增删改查,是可变类型,但是字典的无序性的,不存在索引的概念

# 字典的key不可以是列表、字典、集合等可变类型
# 只能是字符串、数值、元组等不可变类型,但是值可以是任意类型
user = {'key': [1, 2, 3], 1: {'a': 1, 'b': 2}, (1, 2): 'abc'}
print(user)  # {'key': [1, 2, 3], 1: {'a': 1, 'b': 2}, (1, 2): 'abc'}
# dic = {[1, 2]: 'abc'}  # TypeError: unhashable type: 'list'  报错  列表不能做key

# 字典的key具备唯一,在字典里key不能被重复,如果重复那后面的值,会覆盖前面的值
dic1 = {'name': '写代码也摆烂', 'age': 18, 'name': '加油写代码啊!'}
print(dic1)

字典和集合散列类型,字符串、列表、元组序列类型

        2、字典的查询

        前面我们学的查,都是通过索引,来进行查找某个值,字典不同,他是通过key来查询

        2.1 语法:字典名['键名']
dic = {'name': '写代码也摆烂', 'age': 18}
print(dic['name'])  # 输出:写代码也摆烂
# 这里只能写键名,如果写值或者其他的值,会直接报错
print(dic['写代码也摆烂'])  # 报错  KeyError: '写代码也摆烂'
        2.2 语法:字典名.get('键名')
dic = {'name': '写代码也摆烂', 'age': 18}
print(dic.get('name'))  # 输出:写代码也摆烂
# 这里可以这里的键名可以随便写,如果有对应的值,返回该值,如果没有则返回None
print(dic.get('写代码也摆烂'))  # 没有找到该键名返回   None

        3、删除

        3.1 del删除指定键值对
dic = {'name': '写代码也摆烂', 'age': 18}
del dic['name']  # 删除键为name的键值对
print(dic)  # {'age': 18}
# 需要注意不能对没有的进行删除
del dic['name']  # 因为上面删除了所有已经没有name了  直接报错:KeyError: 'name'
        3.2 pop根据指定key删除键值对

                在列表中pop用于索引删除,不知道默认删除最后一个元素

dic = {'name': '写代码也摆烂', 'age': 18}
dic.pop('name')  # 删除键为name的键值对
print(dic)  # {'age': 18}
# 需要注意不能对没有的进行删除
dic.pop('name')  # 因为上面删除了所有已经没有name了  直接报错:KeyError: 'name'
    3.3 clear清除字典里所有键值对,返回一个空字典
dic = {'name': '写代码也摆烂', 'age': 18}
dic.clear()
print(dic)  # {}

        4、改/增字典

        4.1 字典[键名] = 值:键名存在就修改字典,键名不存在则新增一个键值对

        注意键名不能直接修改

dic = {'name': '写代码也摆烂', 'age': 18}
dic['age'] = 20  # 有age这个键则修改age的值
print(dic)  # 输出:{'name': '写代码也摆烂', 'age': 20}
dic['sex'] = 'man'  # 没有该键,则新增一个键值对
print(dic)  # 输出:{'name': '写代码也摆烂', 'age': 20, 'sex': 'man'}
        4.2 字典.update({键值对})  用于添加一个或多个键值对,或者说是字典的拼接直接添加字典
dic = {'name': '写代码也摆烂', 'age': 18}
dic.update({'sex': 'man'})  # 添加一个或多个键值对,或者说添加一个字典
print(dic)  # {'name': '写代码也摆烂', 'age': 18, 'sex': 'man'}
dic1 = {'写代码': '摆烂'}
dic.update(dic1)
print(dic)  # {'name': '写代码也摆烂', 'age': 18, 'sex': 'man', '写代码': '摆烂'}

         5、字典的长度len返回有多少对键值对

dic = {'name': '写代码也摆烂', 'age': 18}
print(len(dic))  # 2

        6、成员运算符 in  和 not in  ,判断某个元素的是否是字典的key

dic = {'name': '写代码也摆烂', 'age': 18}
print('name' in dic)  # True
print('写代码也摆烂' in dic)  # False

        7、获取字典的键或值

        7.1 keys/values 分别获取键/值进行返回
dic = {'name': '写代码也摆烂', 'age': 18}
print(dic.keys())  # 返回所有的键  dict_keys(['name', 'age'])
print(dic.values())  # 返回所有的值  dict_values(['写代码也摆烂', 18])
print(list(dic.keys()))  # 返回所有键的列表    ['name', 'age']
print(list(dic.values()))  # 返回所有值的列表  ['写代码也摆烂', 18]
        7.2  字典.items()  同时获取键和值
dic = {'name': '写代码也摆烂', 'age': 18}
print(dic.items())  # dict_items([('name', '写代码也摆烂'), ('age', 18)])  返回特殊类型
for i, j in dic.items():
    print(i, j)

二、集合

        1、集合定义

        作用:集合用于存储一组唯一的元素,常用于去除重复元素、快速查找是否存在某个元素等操作,无序,是可迭代对象

        格式:{数据1,数据2,数据3....数据n}

        定义:set()/{数据1,数据2}

# 定义集合
s1 = {1, 2, 3}
s2 = set([4, 5, 6])
print(s1, type(s1))  # {1, 2, 3} <class 'set'>
print(s2, type(s2))  # {4, 5, 6} <class 'set'>
# 定义空集合,需要注意必须使用set来创建
s3 = {}  # 这是创建空字典
s4 = set()  # 这是创建集合
print(s3, type(s3))   # {} <class 'dict'>
print(s4, type(s4))  # set() <class 'set'>
        注意:

        1)定义空集合必须使用set来定义

        2)集合元素必须是不可变类型(如列表 字典 集合会报错)

         3)元素的唯一性,在集合里是没有重复的元素的,会自动去重

        4)元素的无序性,集合的元素是没有顺序的,意味着集合是没有索引的,所以没有修改和查询操作

# s = {1, 2, 3, [1, 2]}  # 报错 TypeError: unhashable type: 'list'
s = {1, 2, 3, 4, 4, 3, 4, 2, 3, 4}  # 重复值会自动掉,只剩一个
print(s)  # {1, 2, 3, 4}
s1 = {1, 2, 3, 'a', 'c', (1, 3)}
print(s1)
# 无序性  每次输出都会发生不同的变化
# 1 {1, 2, 3, 'c', 'a', (1, 3)}
# 2 {1, 2, 3, 'c', (1, 3), 'a'}
# 3 {1, 2, 3, 'a', 'c', (1, 3)}

         2、增加

        2.1 集合.add(元素) 添加元素,整体添加
s = {1, 2, 3, 4, 5}
s.add(6)
print(s)  # {1,2,3,4,5,6}
# 如果添加重复的元素也会被去重
s.add(5)
print(s)  # {1,2,3,4,5,6}
# 整体添加
s.add('abc')
print(s)  # {1, 2, 3, 4, 5, 6, 'abc'}  直接将一整个字符串'abc'添加进去
        2.2 集合.update(可迭代对象)  分散添加
s = {1, 2, 3, 4, 5}
s.update('abc')
#分散添加
print(s)  # {1, 2, 3, 4, 5, 'a', 'b', 'c'}
# 将'abc'拆开来添加进去了

        3、删除集合

        3.1 集合.remove 删除指定的元素,如果集合有就会删除,没有会报错
s = {1, 2, 3, 4, 5}
s.remove(1)
print(s)  # {2, 3, 4, 5}
s.remove(0)  # KeyError: 0
        3.2 集合.discard() 删除指定元素,有就删除,没有不会发生任何改变
s = {1, 2, 3, 4, 5}
s.discard(1)
print(s)  # {2, 3, 4, 5}
s.discard(0)  # 没有需要删除的,不发生任何改变
print(s)

        4、求集合的长度len()

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

         5、成员运算符in和not in

s = {1, 2, 3, 4, 5}
print(1 in s)  # True

        6、集合的关系运算符 

        1、交集 &:a&b 输出集合a和集合b中都包含的元素
        2、并集/合集 |:a|b 输出集合a和集合b中包含的所有元素
        3、差集 -:a-b 输出集合a中包含而集合b中不包含的元素
a = {1, 2, 3, 4, 5, 6}
b = {2, 4, 6, 8}
print(a & b)  # {2, 4, 6}
print(a | b)  # {1, 2, 3, 4, 5, 6, 8}
print(a - b)  # {1, 3, 5}

总结

字典还是比较方便的,集合的话用的少。

欢迎指正!

标签:Set,name,Dictionary,python,dic,集合,摆烂,print,字典
From: https://blog.csdn.net/w3360701048/article/details/137227560

相关文章

  • 担心就业?Python 的七大就业方向,总有一个适合你!
    1、python爬虫工程师平均薪资:15-25k(参考-招聘网)介绍:爬虫技术就是用Python收集和爬取互联网的信息,也是小伙伴们入坑Python的第一驱动力。爬虫技术之所以受宠是由于它能大大地提高我们的工作效率。学会Python爬虫后,即使不做程序员的工作也能加分不少。技能要求:前端......
  • 【python】txt文件读取
    1open()函数file=open('example.txt','r')print(file.read())file.close()(1)整体读入,可以直接read()(2)一定要记得关闭2with语句withopen('example.txt','r')asf:forlineinf:print(line.strip())(1)line.strip的意思是去......
  • 【机器学习】数据探索---python主要的探索函数
    在上一篇博客【机器学习】数据探索(DataExploration)—数据质量和数据特征分析中,我们深入探讨了数据预处理的重要性,并介绍了诸如插值、数据归一化和主成分分析等关键技术。这些方法有助于我们清理数据中的噪声、消除异常值,以及降低数据的维度,从而为后续的机器学习模型训练......
  • 【Python BUG】ImportError: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CX
    报错ImportError:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:version`CXXABI_1.3.9‘notfound背景开发的一个python预测程序(算法分析+应用服务),在原本的linux服务器下配置了开发环境,打包后在另一台凝思服务器解压,发现报错。应该是linux系统之间存在差异,动态库缺失......
  • Python学习(二)
    目录1.字符串1.1修改字符串的大小写1.1.1title方法1.1.2upper()和lower()方法1.2连接字符串1.3转义字符1.3.1制表符\t和换行符\n......
  • Python自动化测试工具-selenium
    官网https://www.selenium.dev/测试环境搭建python3+selenium+chromeselenium安装:pipinstallseleniumchromedriver下载对应版本,放置在python安装目录下:http://chromedriver.storage.googleapis.com/index.html#coding=utf8fromseleniumimportwebdriverbr=......
  • Linux 环境 (红帽 rhel 7.3) Python 3 安装
    自己装的虚拟机(红帽7),默认安装的python2.7,更新为python3.8  自己做个记录,方便日后查看注意:红帽的yum 需要注册才能使用,必须要替换yum,替换方法请参见:怎样替换rhel7.3的yum【步骤】1.下载python3.8安装包python:https://www.python.org/downloads/source/  找稳定发......
  • 输出全排列 pta python
    输入整数n(3<=n<=7),编写程序输出1,2,...,n整数的全排列,按字典序输出。输入格式:一行输入正整数n。输出格式:按字典序输出1到n的全排列。每种排列占一行,数字间无空格。输入样例:在这里给出一组输入。例如:3输出样例:在这里给出相应的输出。例如:123132213231312321......
  • 盘点3种Python网络爬虫过程中的中文乱码的处理方法
    大家好,我是Python进阶者。前几天给大家分享了一些乱码问题的文章,感兴趣的小伙伴可以前往:UnicodeEncodeError:'gbk'codeccan'tencodecharacter解决方法,这里再次给大家祭出网络爬虫过程中三种中文乱码的处理方案,希望对大家的学习有所帮助。前言前几天有个粉丝在Python交流群......
  • 图像处理环境配置opencv-python
    下载python,配置pip使用清华源下载镜像:​pipconfigsetglobal.index-urlhttps://pypi.tuna.tsinghua.edu.cn/simple​切换到python目录下,右击cmd,执行pip升级指令:​python-mpipinstall--upgradepip​下载opencv:​pipinstall--useropencv-python​opencv核心库​p......