码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python字典和集合操作指南:创建、获取值、修改和删除键值对,复制和遍历方法全解析


    文章目录

    • 字典(dict)
      • 创建字典
      • 获取字典中的值
      • 修改字典
      • 删除字典中的键值对
      • 复制字典
      • 字典推导式
      • 遍历字典
        • 使用keys()方法
        • 使用values()方法
        • 使用items()方法
      • 小结
    • 集合(set)
      • 创建集合
      • 集合操作
      • 集合运算
      • 小结
    • python精品专栏推荐
      • python基础知识(0基础入门)
      • python爬虫知识

    字典(dict)

    字典是一种新的数据结构,被称为映射(mapping)。它类似于列表,都用于存储对象。然而,相比列表,字典在查询数据时性能更佳。这是因为在字典中,每个元素都有一个唯一的名字,通过这个名字可以快速查找到指定的元素。

    字典由多个键值对(key-value)构成,其中每个键值对都有一个唯一的键和对应的值。通过键可以快速查询到对应的值。创建字典的方式是使用大括号 {},并提供键值对。键可以是任意不可变对象(例如 int、str、bool、tuple 等),但通常我们使用字符串作为键。

    创建字典

    使用{}来创建字典,语法:{k1:v1,k2:v2,k3:v3}。

    # 使用{}
    d = {'name':'孙悟空', 'age':18, 'gender':'男'}
    
    • 1
    • 2

    也可以使用dict()函数来创建字典,每一个参数都是一个键值对,参数名就是键,参数值就是值(这种方式创建的字典,key都是字符串)。

    # 使用dict()函数来创建字典
    d = dict(name='孙悟空', age=18, gender='男')
    
    • 1
    • 2

    还可以将一个包含双值子序列的序列转换为字典,双值序列指的是序列中只有两个值,如[1,2]、('a',3)和'ab'等。子序列指的是序列中的元素也是序列的情况,比如[(1,2),(3,5)]。

    d = dict([('name', '孙悟饭'), ('age', 18)])
    
    • 1

    获取字典中的值

    可以使用键来获取字典中的值,语法为:d[key]。如果键不存在,会抛出异常KeyError。

    print(d['age'])
    
    • 1

    可以使用get(key[, default])方法来根据键获取字典中的值。如果键在字典中不存在,则会返回None,也可以指定一个默认值作为第二个参数,当获取不到值时返回默认值。

    print(d.get('name'))
    print(d.get('hello', '默认值'))
    
    • 1
    • 2

    修改字典

    可以使用d[key] = value来修改字典中的键值对。如果键存在,则会覆盖其对应的值;如果键不存在,则会添加新的键值对。

    d['name'] = 'sunwukong'  # 修改字典的key-value
    d['address'] = '花果山'  # 向字典中添加key-value
    
    • 1
    • 2

    另外,还可以使用setdefault(key[, default])方法向字典中添加键值对。如果键已经存在于字典中,则返回键对应的值,不会对字典做任何操作;如果键不存在,则向字典中添加该键,并设置对应的值。

    result = d.setdefault('name', '猪八戒')
    result = d.setdefault('hello', '猪八戒')
    
    • 1
    • 2

    还可以使用update([other])方法将其他字典中的键值对添加到当前字典中。如果有重复的键,则后面的键值对会替换当前的。

    d = {'a': 1, 'b': 2, 'c': 3}
    d2 = {'d': 4, 'e': 5, 'f': 6, 'a': 7}
    d.update(d2)
    
    • 1
    • 2
    • 3

    删除字典中的键值对

    可以使用del关键字删除字典中的键值对。

    del d['a']
    del d['b']
    
    • 1
    • 2

    还可以使用popitem()方法随机删除字典中的一个键值对,一般会删除最后一个键值对。删除后,该方法会将删除的键值对作为返回值返回,返回值是一个元组,包含两个元素,第一个元素是被删除的键,第二个元素是被删除的值。

    result = d.popitem()
    
    • 1

    另外,还可以使用pop(key[, default])方法根据键删除字典中的键值对。该方法会返回被删除的值。如果删除不存在的键,会抛出异常。如果指定了默认值,并且删除的键不存在,则不会报错,而是直接返回默认值。

    result = d.pop('d')
    result = d.pop('z', '这是默认值')
    
    • 1
    • 2

    此外,可以使用clear()方法来清空字典中的键值对。

    d.clear()
    
    • 1

    复制字典

    可以使用copy()方法对字典进行浅复制。复制后的对象和原对象是独立的,修改一个不会影响另一个。需要注意的是,浅复制只会复制对象内部的值,对于值也是可变对象的情况,它们不会被复制。

    d = {'a': 1, 'b': 2, 'c': 3}
    d2 = d.copy()
    
    • 1
    • 2
    d = {'a': {'name': '孙悟空', 'age': 18}, 'b': 2, 'c': 3}
    d2 = d.copy()
    d2['a']['name'] = '猪八戒'
    
    • 1
    • 2
    • 3
    print('d =', d, id(d))
    print('d2 =', d2, id(d2))
    
    • 1
    • 2

    字典推导式

    与列表推导式类似,Python 还支持使用字典推导式创建字典。

    # 创建一个包含数字的字典
    d = {i: i**2 for i in range(5)}
    print(d)  # 输出:{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
    
    • 1
    • 2
    • 3

    遍历字典

    遍历字典是指依次访问字典中的每一个键值对。在Python中,有几种方法可以实现字典的遍历操作。

    使用keys()方法

    keys()方法会返回字典的所有键。我们可以通过遍历键来获取字典中的每个键值对。

    示例代码:

    d = {'name':'孙悟空','age':18,'gender':'男'}
    
    for k in d.keys():
        print(k, d[k])
    
    • 1
    • 2
    • 3
    • 4

    使用keys()方法可以获取字典中的所有键,然后通过遍历键来获取每个键值对的值。

    使用values()方法

    values()方法会返回字典的所有值。我们可以通过遍历值来获取字典中的每个键值对。

    示例代码:

    d = {'name':'孙悟空','age':18,'gender':'男'}
    
    for v in d.values():
        print(v)
    
    • 1
    • 2
    • 3
    • 4

    使用values()方法可以获取字典中的所有值,然后通过遍历值来访问每个键值对的值。

    使用items()方法

    items()方法会返回字典中的所有项,每一项是一个包含键和值的双值子序列。

    示例代码:

    d = {'name':'孙悟空','age':18,'gender':'男'}
    
    for k, v in d.items():
        print(k, '=', v)
    
    • 1
    • 2
    • 3
    • 4

    使用items()方法可以获取字典中的所有项,然后通过遍历项来获取每个键值对的键和值。

    小结

    字典是一种非常灵活的数据结构,可以用于存储各种类型的数据。通过键值对的方式,我们可以快速地查找、添加、修改和删除元素。此外,字典还支持字典推导式等高级用法,可以帮助我们更加方便地操作数据,同时你可以根据具体需求选择合适的方法进行遍历字典。

    集合(set)

    集合和列表非常相似,不同点如下:

    1. 集合中只能存储不可变对象
    2. 集合中存储的对象是无序的,不按元素的插入顺序保存
    3. 集合中不能存在重复的元素

    创建集合

    可以使用{}来创建集合:

    s = {10, 3, 5, 1, 2, 1, 2, 3, 1, 1, 1, 1}  # 
    
    • 1

    注意,集合中不能包含可变对象,例如列表:

    # s = {[1, 2, 3], [4, 6, 7]}  # TypeError: unhashable type: 'list'
    
    • 1

    可以使用set()函数来创建集合:

    s = set()  # 空集合
    
    • 1

    还可以通过set()将序列和字典转换为集合:

    s = set([1, 2, 3, 4, 5, 1, 1, 2, 3, 4, 5])
    s = set('hello')
    s = set({'a': 1, 'b': 2, 'c': 3})  # 只包含字典中的键
    
    • 1
    • 2
    • 3

    集合操作

    可以使用以下操作来处理集合:

    • 使用in和not in来检查集合中的元素是否存在
    • 使用len()来获取集合中元素的数量
    • 使用add()向集合中添加元素
    • 使用update()将一个集合中的元素添加到当前集合中
    • 使用pop()随机删除并返回一个集合中的元素
    • 使用remove()删除集合中的指定元素
    • 使用clear()清空集合
    • 使用copy()进行浅复制

    示例代码:

    s = {'a', 'b', 1, 2, 3, 1}
    
    print('c' in s)  # False
    print(len(s))
    
    s.add(10)
    s.add(30)
    
    s2 = set('hello')
    s.update(s2)
    s.update((10, 20, 30, 40, 50))
    s.update({10: 'ab', 20: 'bc', 100: 'cd', 1000: 'ef'})
    
    result = s.pop()
    
    s.remove(100)
    s.remove(1000)
    
    s.clear()
    
    print(result)
    print(s, type(s))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    集合运算

    在对集合进行运算时,不会影响原来的集合,而是返回一个运算结果。

    示例代码:

    s = {1, 2, 3, 4, 5}
    s2 = {3, 4, 5, 6, 7}
    
    result = s & s2  # 交集运算
    result = s | s2  # 并集运算
    result = s - s2  # 差集
    result = s ^ s2  # 异或集
    
    a = {1, 2, 3}
    b = {1, 2, 3, 4, 5}
    
    result = a <= b  # 检查一个集合是否是另一个集合的子集
    result = {1, 2, 3} <= {1, 2, 3}  # True
    result = {1, 2, 3, 4, 5} <= {1, 2, 3}  # False
    
    result = {1, 2, 3} < {1, 2, 3}  # 检查一个集合是否是另一个集合的真子集
    result = {1, 2, 3} < {1, 2, 3, 4, 5}  # True
    
    result = a >= b  # 检查一个集合是否是另一个的超集
    result = a > b  # 检查一个集合是否是另一个的真超集
    
    print('result =', result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    以上是关于集合的一些基本操作和运算,总结如下。

    小结

    当使用集合时,需要注意以下几点:

    1. 集合是一种无序且元素唯一的数据结构。
    2. 可以使用{}或set()函数创建集合。
    3. 集合中只能存储不可变的对象,不能包含可变对象。
    4. 可以使用in和not in来检查集合中的元素是否存在。
    5. 使用len()获取集合中元素的数量。
    6. 使用add()向集合中添加元素,使用update()将一个集合中的元素添加到当前集合中。
    7. 使用pop()随机删除并返回一个集合中的元素,使用remove()删除集合中的指定元素,使用clear()清空集合。
    8. 使用copy()进行浅复制。
    9. 集合可以进行交集运算(&)、并集运算(|)、差集运算(-)和异或集运算(^)。
    10. 可以使用<=、<、>=和>来比较两个集合的关系,如子集、超集和真子集等。

    总结起来,集合是一种非常有用的数据结构,适用于需要存储一组元素并进行快速元素查找和去重的场景。

    python精品专栏推荐


    python基础知识(0基础入门)

    【python基础知识】0.print()函数
    【python基础知识】1.数据类型、数据应用、数据转换
    【python基础知识】2.if条件判断与条件嵌套
    【python基础知识】3.input()函数
    【python基础知识】4.列表和字典
    【python基础知识】5.for循环和while循环
    【python基础知识】6.布尔值和四种语句(break、continue、pass、else)
    【python基础知识】7.实操-用Python实现“文字PK”小游戏(一)
    【python基础知识】7.实操-用Python实现“文字PK”小游戏(二)
    【python基础知识】8.编程思维:如何解决问题-思维篇
    【python基础知识】9.函数的定义和调用
    【python基础知识】10.用函数编写程序 - 实操篇
    【python基础知识】10.用Python实现石头剪刀布小游戏-函数实操篇
    【python基础知识】11.如何debug -常见报错原因及排查思路 - 思维篇
    【python基础知识】12.类与对象(一)
    【python基础知识】12.类与对象(二)
    【python基础知识】13.类与对象(三)
    【python基础知识】13.类与对象(四)
    【python基础知识】14.图书管理系统的搭建(类与对象实操)
    【python基础知识】15.编码基础知识
    【python基础知识】16.文件读写基础及操作
    【python基础知识】16.“古诗默写题”的python实现(文件读写和编码-实操篇)
    【python基础知识】17.模块的概念以及如何引入
    【python基础知识】18.实操-使用python自动群发邮件
    【python基础知识】19.产品思维以及流程图的使用 - 思维篇
    【python基础知识】20.“午饭吃什么”的python实现(产品思维-实操篇)
    【python基础知识】21.高效偷懒的正确打开方式-毕业篇
    【python文件处理】CSV文件的读取、处理、写入
    【python文件处理】Excel自动处理(使用 openpyxl)
    【python文件处理】-excel格式处理


    python爬虫知识

    【python爬虫】1.爬虫基础知识
    【python爬虫】2.网页基础知识
    【python爬虫】3.爬虫初体验(BeautifulSoup解析)
    【python爬虫】4.爬虫实操(菜品爬取)
    【python爬虫】5.爬虫实操(歌词爬取)
    【python爬虫】6.爬虫实操(带参数请求数据)
    【python爬虫】7.爬到的数据存到哪里?
    【python爬虫】8.温故而知新
    【python爬虫】9.带着小饼干登录(cookies)
    【python爬虫】10.指挥浏览器自动工作(selenium)
    【python爬虫】11.让爬虫按时向你汇报
    【python爬虫】12.建立你的爬虫大军
    【python爬虫】13.吃什么不会胖(爬虫实操练习)
    【python爬虫】14.Scrapy框架讲解
    【python爬虫】15.Scrapy框架实战(热门职位爬取)
    【python爬虫】16.爬虫知识点总结复习

  • 相关阅读:
    2022-2028全球直角变速箱行业调研及趋势分析报告
    linux防火墙相关命令
    【Go语言】Go语言中的函数
    工程管理系统简介 工程管理系统源码 java工程管理系统 工程管理系统功能设计
    2020年12月 Python(二级)真题解析#中国电子学会#全国青少年软件编程等级考试
    批量执行insert into 的脚本报2006 - MySQL server has gone away
    软件工程综合实践课程第十一周作业( SpringBoot整合Mybatis完成CRUD操作并使用接口调试工具对接口进行测试)
    细粒度特征提取和定位用于目标检测:PPCNN
    vue状态管理工具
    融云出海:跟着「花少 · 丝路季」去沙特,为什么现在是出海中东最好时机?
  • 原文地址:https://blog.csdn.net/qq_41308872/article/details/132762426
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号