Python系列-字典

news2024/10/4 20:07:44

 🌈个人主页: 会编程的果子君
💫个人格言:“成为自己未来的主人~” 

目录

字典是什么

创建字典

查找key

新增/修改元素

删除元素

遍历字典元素

取出所有的key和value

合成的key类型

​编辑

小结


字典是什么

字典是一种存储键值对的结构

啥是键值对?这是计算机/生活中一个非常广泛使用的概念

把键(key)和值(value)进行一个一对一的映射,然后就可以根据键,快速找到值

创建字典

  • 创建一个空的字典,使用{}表示字典
    a={}
    b=dict()
    print(type(a))
    print(type(b))
    

  • 也可以在创建的同时指定初始值
  • 键值对之间使用,分割,键和值之间使用:分割,(置号后面推荐加一个空格)
  • 使用print来打印字典内容 
student={'id':1,'name':'zhangsan'}
print(student)
  • 为了代码更规范美观,在创建字典的时候往往会把多个键值对,分成多行来书写 
    student={
        'id':1,
        'name':'zhangsan'
    }
    

  • 最后一个键值对,可以写,,也可以不写 
student={
    'id':1,
    'name':'zhangsan',
}

查找key

  • 使用 in 可以判定 key 是否在字典中存在,返回布尔值

 

student={
    'id':1,
    'name':'zhangsan',
}
print('id'in student)
print('score' in student)

 

  • 使用 [ ] 通过类似于取下标的方式,获取到元素的值,只不过此处的“下标”是key(可能是整数,也可能是字符串等其他类型)
    student={
        'id':1,
        'name':'zhangsan',
    }
    # print('id'in student)
    # print('score' in student)
    print(student['id'])
    print(student['name'])

  • 如果key在字典中不存在,则会抛出异常

    student={
        'id':1,
        'name':'zhangsan',
    }
    print(student['score'])
    

新增/修改元素

使用 [ ] 可以根据 key 来新增/修改value

  • 如果 key 不存在,对取下标操作赋值,即为新增键值对
    student={
        'id':1,
        'name':'zhangsan',
             }
    student['score']=90
    print(student)
    

  • 如果key已经存在,对取下标操作赋值,即为修改键值对的值

    student={
        'id':1,
        'mame':'zhangsan',
        'score':80,
    }
    student['score']=90
    print(student)
    

删除元素

  • 使用pop方法根据key删除对应的键值对
    student={
        'id':1,
        'name':'zhangsan',
        'score':80,
    }
    student.pop('score')
    print(student)
    

遍历字典元素

  • 直接使用 for 循环能够获取到字典中的所有key,进一步就可以取出每一个值了
    student={
        'id':1,
        'name':'zhangsan',
        'score':80
    }
    
    for key in student:
        print(key,student[key])
        

    取出所有的key和value

  • 使用 keys 方法可以获取到字典中的所有的key
    student={
        'id':1,
        'name':'zhangsan',
        'score':80
    }
    
    print(student.keys())
    
    
    

此处的dict_keys是一个特殊的类型,专门用来表示字典的所有key,大部分元组支持的操作对于dict_keys同样适用

  • 使用values方法可以获取到字典中的所有value
    
    student={
        'id':1,
        'name':'zhangsan',
        'score':80
    }
    
    print(student.values())
    
    

此处的dict_values也是一个特殊的类型,和dict_keys类似

  • 使用items方法可以获取到字典中所有的键值对
    student={
        'id':1,
        'name':'zhangsan',
        'score':80
    }
    
    print(student.items())

合成的key类型

不是所有的类型都可以作为字典的key

字典本质上是一个哈希表,哈希表的key要求是“可哈希的”,也就是可以计算出一个哈希值

  • 可以使用hash函数计算某个对象的哈希值
  • 但凡能够计算出哈希值的类型,都可以作为字典的key
    print(hash(1))
    print(hash('hello'))
    print(hash(True))
    print(hash(()))
    
    

  • 列表无法计算哈希值

    print(hash([1,2,3]))
    

  • 字典也无法计算哈希值

    print(hash({'id':1}))

小结

字典也是一个常用的结构,字典的所有操作都是围绕 key 来展开的,需要表示“键值对映射”这种场景时就可以考虑使用字典

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

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

相关文章

D2632——LDO系列电路,高精度、大电流、低压差。最大输出电流可达3A,应用于汽车电子设备等产品中

D2632是一款高精度、大电流、低压差电压调整器。主要作为电源装置提供高效的电压调整。 最大输出电流可达3A,并且外接器件少,拥有输出电压(ADJ) 可调特点。 主要特点: 1. 低压差(满载350mV); 2. 地电流小; 3. 精确度保证在士1%; 4. 非常快速…

C++中的字符串翻转算法解析

个人主页:[PingdiGuo_guo] 收录专栏:[C干货专栏] 大家好,今天我们来学一下C里的一个知识:字符串翻转。 目录 1.题目 描述 输入描述 输出描述 输入数据 1 输出数据 1 提示 2.解决题目 1.所需知识点 2.算法分析 1. 拼接…

【PostgresSQL系列】 ltree简介及基于SpringBoot实现 ltree数据增删改查

本文将对PostgresSQL中的ltree进行相关概念介绍,并以示例代码讲解ltree数据增删改查功能的实现。 作者:后端小肥肠 目录 1.前言 2. 基础概念 2.1. ltree 2.2. lquery 2.3. ltxtquery 2.4. ltree函数及操作符 2.4.1. ltree函数 2.4.2. ltree操作符…

AJAX-认识URL

定义 概念:URL就是统一资源定位符,简称网址,用于访问网络上的资源 组成 协议 http协议:超文本传输协议,规定浏览器和服务器之间传输数据的格式 协议范围:http,https,... 域名 域名:标记服务…

2024年美赛数学建模F题思路分析 - 减少非法野生动物贸易

# 1 赛题 问题F:减少非法野生动物贸易 非法的野生动物贸易会对我们的环境产生负面影响,并威胁到全球的生物多样性。据估计,它每年涉及高达265亿美元,被认为是全球第四大非法交易。[1]你将开发一个由数据驱动的5年项目&#xff0c…

一键部署自己的chatgpt4

效果 安装 docker pull hlohaus789/g4f docker run -d -p 10036:8080 -p 1337:1337 -p 7900:7900 --shm-size"2g" hlohaus789/g4f:latest镜像比较大,大约1.82G 使用 浏览器打开 http://192.168.168.111:10036/ 愉快地使用吧

使用Python的Turtle模块简单绘制烟花效果

import turtle import random# 初始化屏幕 screen turtle.Screen() screen.bgcolor("black") screen.title("烟花模拟")# 创建一个Turtle来绘制烟花 firework turtle.Turtle() firework.hideturtle() firework.speed(0) # 设置绘图速度为最快# 绘制烟花…

nrm切换镜像源-yarn不生效问题

在说这问题前,大家肯定知道nvn管理node版本,不懂的朋友直接看此文: nvm - nodejs版本管理工具:https://blog.csdn.net/tianlu930/article/details/135988727 要安装node自带npm其实不好用,一般都用再装yarn&#xff0c…

gtkmm xml ui 例子(from string)

文章目录 前言来看一个从字符串中生成UI的例子 前言 glade生成的xml格式不被gtkmm4支持, 需要作修改 来看一个从字符串中生成UI的例子 #include <gtkmm/application.h> #include <gtkmm.h> #include <iostream> using namespace std;class ExampleWindow :…

Redis的bitmap使用不当,我内存爆了

背景 最近发现Redis的内存持续暴涨&#xff0c; 涨的有点吓人&#xff0c;机器都快扛不住了&#xff0c;不得不进行Redis内存可视化分析&#xff0c;发现大量的String类型的大key 经分析&#xff0c;最近上线了页面UV的统计&#xff0c;那目前如何做的呢&#xff1f; 通过访…

151基于matlab的齿轮-轴-轴承系统的含间隙非线性动力学模型

基于matlab的齿轮-轴-轴承系统的含间隙非线性动力学模型&#xff0c;根据牛顿第二定律&#xff0c;建立齿轮系统啮合的非线性动力学方程&#xff0c;同时也主要应用修正Capone模型的滑动轴承无量纲化雷诺方程&#xff0c;利用这些方程推到公式建模&#xff1b;用MATLAB求解画出…

Python中使用HTTP代理进行网络请求:轻松玩转网络世界的“魔法门“

嘿&#xff0c;小伙伴们&#xff01;今天我们来聊一聊Python中一个超级有用的功能——使用HTTP代理进行网络请求。这不是在念咒语&#xff0c;而是开启网络世界的"魔法门"。 首先&#xff0c;让我们了解一下什么是HTTP代理。简单来说&#xff0c;HTTP代理就是一个中…

影响计算机性能的前10大因素,看你到底关注了几个

计算机性能被定义为计算机系统在给定时间内完成的有价值的工作量。它是根据执行程序或指令的效率、准确性和速度来估计的。因此,当你想知道为什么你的设备速度慢,而其他时候它一直在有效工作时,有几个因素可能会导致这个问题。 其中一些包括CPU、RAM大小、硬盘空间、速度、…

OJ刷题:《剑指offer》之左旋字符串!

目录 1.题目描述 2.方法一&#xff08;元素一一挪&#xff09; 2.1算法解析 2.2代码实现 3.方法二&#xff08;三次逆置&#xff09; 3.1算法解析 3.2代码实现 4.方法三&#xff08;库方法&#xff09; 4.1算法解析 4.2代码实现 5.完结散花 创作不易&#xff0c;宝子…

做研究系列:快速总结大量研究论文的成果

快速总结大量研究论文的成果时&#xff0c;可以遵循以下步骤和策略来提高效率并确保准确性&#xff1a; 系统性筛选与阅读摘要&#xff1a; 首先根据研究主题或关键词筛选出相关论文。快速阅读每篇论文的摘要&#xff0c;了解其主要目的、方法、关键结果和结论。 构建大纲与分类…

EtherCAT FP介绍系列文章—UDP gateway

EtherCAT主站上的Mailbox Gateway功能&#xff0c;可以用于将EtherCAT mailbox相关协议从外部设备的工具通过邮箱网关路由到EtherCAT从站设备。在EtherCAT规范中定义的所有邮箱协议在此功能中都可用&#xff0c;例如CoE, FoE, VoE, SoE。 但是&#xff0c;这里特别注意的是Mai…

Elasticsearch-内存结构

ElasticSearch的内存从大的结构可以分堆内存&#xff08;On Heap&#xff09;和堆外内存&#xff08;Off Heap&#xff09;。Off Heap部分由Lucene进行管理。On Heap部分存在可GC部分和不可GC部分&#xff0c;可GC部分通过GC回收垃圾对象&#xff0c;从而释放内存。不可GC部分不…

英码科技携手昇腾共建算力底座:推出EA500I超强AI处理能力边缘计算盒子!

在数字经济浪潮中&#xff0c;算力已成为不可或缺的驱动力&#xff0c;为各行各业的数字化转型提供了强大的推动力。面对多元化和供需不平衡的挑战&#xff0c;需要实现从理论架构到软硬件实现的质的飞跃&#xff0c;以满足持续增长的算力需求&#xff0c;华为昇腾在这一方面展…

基于JAVA和Vue的宠物医院诊所商城论坛管理系统

摘要&#xff1a; 随着人们生活水平的提高&#xff0c;宠物逐渐成为家庭中不可或缺的成员。伴随着宠物行业的迅猛发展&#xff0c;宠物医疗服务需求也日益增长&#xff0c;传统的宠物医院管理模式已无法满足现代化、信息化的管理需求。因此&#xff0c;开发一款高效、智能的宠物…

ElasticSearch-IK分词器(elasticsearch插件)安装配置和ElasticSearch的Rest命令测试

四、IK分词器(elasticsearch插件) IK分词器&#xff1a;中文分词器 分词&#xff1a;即把一段中文或者别的划分成一个个的关键字&#xff0c;我们在搜索时候会把自己的信息进行分词&#xff0c;会把数据库中或者索引库中的数据进行分词&#xff0c;然后进行一一个匹配操作&…