分享一下最近使用python字典取值用法的收获

news2024/11/17 22:20:36

假设现在有一个字典,内容如下:

data = {'a': 1, 'b': '2'}

初级版本

我最开始学python的时候, 要从字典中取值,我可能会采用下面的写法:

print(data["key"])

上面的用法中,如果输入的key在字典中不存在的时候,就会报KeyError的错误:

16a93e7297f1ea03e89def5d58264406.png

改进版本一

初级版本的使用,输入一个不存在的key,获取数据会报错。那么,是不是可以在获取前先判断一下呢:

可以通过dict.keys()去获取字典的所有key,然后判断你想获取的某个key是否在字典中。

5fbedf694340de842f5f7401c1a008c7.png

改进版本二

后来发现通过对字典使用get(key)的函数,也可以获取数据,并且key不存在的时候,会默认返回None。

e1504020ab6be484b98695878133c201.png

那么,其实get函数除了传一个key的参数之外,还可以传一个默认返回值,由于之前我也没怎么刻意的学过python基础语法,对这些函数的使用细节并不是很清晰,每次都是直接要用啥写不出来就百度一下,问题解决了,就不会再去想着代码还能不能再优化一下。

分享openai帮助我优化代码的过程

 之前我写的一个从字典中获取数据的代码如下:

source_data = source_list.get(sourceIdentify) if source_list.get(sourceIdentify) is not None else []

但是,个人感觉这个还不够优雅,但是又不知道怎么去优化,然后看最近ai问答聊天挺火的,然后我就去试了一下:

c8dca905e920acbf608df2e53ec3fe06.png

看到这个回答,我瞬间觉得自己写的代码很傻。。。

写在最后

可能我今天写的这个用法,大家早就会了,但是,我相信大家都是从第一版、第二版这样有个逐渐演变的过程。对于刚开始学习编程语言的同学来说,先掌握繁琐一点的写法,虽然代码看上去没有这么的优雅,但是可读性可能更容易理解一点。等到后面技术提升了,回过头可以再去优化之前写过的代码,代码这个东西就是要不断的练习才能提升。

32d2ab59156b16005bb76917fc32485b.gif

也欢迎大家加入公众号粉丝交流群 ,群内会不定期提供学习资源,也会不定时分享一些行业资讯,期待与大家共同成长。为保证群成员的质量,请先加我为好友,并简要介绍自己的情况(开放朋友圈,在哪个城市,什么岗位),在确认测试同行的身份之后,我再邀请入群。避免一些打广告的混进群,给大家带来不好的体验~  

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

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

相关文章

【蓝桥集训】第二天——差分

作者:指针不指南吗 专栏:Acwing 蓝桥集训每日一题 🐾做题过程中首先应该注意时间复杂度问题🐾 文章目录1.改变数组元素2.差分3.差分矩阵1.改变数组元素 给定一个空数组 V 和一个整数数组 a1,a2,…,an。 现在要对数组 V 进行 n 次操…

tkinter如何绑定鼠标和键盘等事件

文章目录鼠标点击事件进入或离开控件键盘事件Configure事件控件和人通过事件来交互,Tkinter中则通过Bind来绑定事件。例如 import tkinter as tkroot tk.Tk() txt tk.StringVar() btn tk.Button(root, textvariabletxt, width30, height5) btn.pack()btn.bind(&…

RS485三线制和两线制差别

RS-485是一种应用十分广泛的通信协议。其显著特点是信号采用“差分”的方式传输,因此抗干扰能力很强,通信距离也比RS-232远得多。RS-485通信一般是半双工的,仅需要2根信号线,也可以是全双工的,需要4根信号线。如何解读…

【项目实战】MySQL使用CONCAT字符串拼接函数实现与特殊字符的拼接

一、需求说明 因为有新功能需要上生产环境,总有一些乱七八糟的兼容历史数据的活要去做,比如以下。 需要批量的更新数据库中某个字段(如id列中原来是ABCDEFG,需要改成[“ABCDEFG”]), 没错,就是…

python 的用户输入和 while 循环使用说明

文章目录1. 函数 input() 的工作原理1.1 使用 int() 来获取整数类型1.2 % 求模运算符1.3 版本问题2. while 循环简介2.1 使用示例2.2 利用while循环实现用户选择退出2.3 标志的使用2.4 break 语句2.5 continue 语句2.6 避免无限循环3. 使用 while 循环来处理列表和字典3.1 在列…

mysql8.0(单表查询与多表拆线)

目录 单表查询 1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号,不显示重复的部门号。 3、求出所有职工的人数。 4、列出最高工资和最低工资。 5、列出职工的平均工资和总工资。 6、创建一个只有职工号、姓名和工作时间的新表&…

Vue2.0项目重构到Vue3.0流程

1.重构的流程 1-1新建项目,确定脚手架版本 首先呢,我们新建项目有两种方法 第一种:vue-cli : 安装并执行 npm init vuelatest 选择项目功能时: 除了第一项的项目名字外,其他可以暂时No cd 到自…

安装SQL Server2017 过程中报KB29119355失败的解决方案

SQLServer 2017脱机版下载地址:http://download.microsoft.com/download/6/4/A/64A05A0F-AB28-4583-BD7F-139D0495E473/SQLServer2017-x64-CHS-Dev.isoMicrosoft SQL Server Management Studio 18管理工具下载https://learn.microsoft.com/zh-cn/sql/ssms/download-…

公民自动化开发平台(CADP)列入Gartner《2022-2024 中型企业技术采用路线图》

近日,全球知名咨询公司 Gartner 发布《2022-2024 中型企业技术采用路线图》(获取方式见文末)。该路线图汇集了全球 400 多家中型企业技术领导者的集体智慧,共囊括 53 项技术,涉及多个核心基础设施领域。其中包括计算和…

Wi-Fi 7全新升级,小米蓄势待发!

目前,Wi-Fi 已经成为人们最常用的无线连接技术。随着智能化时代的发展,终端设备对 Wi-Fi 技术的速率、延迟和稳定性等都提出了更高的要求。此前,电气和电子工程师协会 IEEE 发布了 802.11be 草案,Wi-Fi联盟将其命名为 Wi-Fi 7。小…

labelme脚本使用报错:TypeError: ‘NoneType‘ object is not subscriptable

今天好不容易终于把标注做完了,花了我两天时间,终于做到最后用脚本将json文件转成png图片,结果出现了以下报错。 Traceback (most recent call last):File "E:/pythonconda3/Deeplabv3_plus/datasets/Json2Image.py", line 8, in …

虚拟环境的创建以及labelme的使用教程

本来打算是将这两部分分开的,但写完虚拟环境的创建似乎字数太少了,不过二者有关联,所以就放一起了。简单介绍一下,虚拟环境的创建有win11系统已经Ubuntu系统,labelme教程包括了下载及其使用的全部流程,以及…

MySQL参数优化之innodb_buffer_pool_size

innodb_buffer_pool我们俗称缓冲池, 缓冲池简单来说就是一块内存区域,通过内存的速度来弥补磁盘速度较慢对数据库性能的影响。 写入时,先将数据写入缓冲池种,再定期刷新到磁盘;读取时,将读到的页放到缓冲池…

RPC与HTTP的区别与联系(二)

目录 1.远程调用方式 2.认识RPC 3.认识Http 4.RPC与HTTP选择 5.深入分析 1.远程调用方式 无论是微服务还是分布式服务(都是SOA,都是面向服务编程),都面临着服务间的远程调用。那么服务间的远程调用方式有哪些呢?…

【PR】时间轴窗口

【PR】时间轴窗口时间轴窗口工具按钮—视频轨道切换轨道输出切换同步锁定目标切换轨道锁定轨道对插入和覆盖进行源修补工具按钮—音频轨道静音轨道独奏轨道画外音录制时间轴窗口基础操作添加轨道查看完成视频和音频缩放轨道删除轨道添加关键帧使用软件:Premiere2020…

前端学习第一阶段——第五章 CSS(上)

5-1 CSS基本选择器 01-CSS层叠样式表导读 02-CSS简介 03-体验CSS语法规范 04-CSS代码风格 05-CSS选择器的作用 06-标签选择器 07-类选择器 08-使用类选择器画盒子 09-类选择器特殊使用-多类名 10-id选择器 11-通配符选择器 5-2 CSS样式 12-font-family设置字体系列 13-font-s…

Linux的sysstat(sar)的详细使用

文章目录安装使用内存和存储器页面换入换出统计信息I/O和传输速率统计信息块设备的活动统计信息网络统计信息队列长度和负载平均值统计信息内存利用率统计信息CPU利用率统计信息安装 yum install -y sysstat使用 内存和存储器页面换入换出统计信息 sar -B -f /var/log/sa/sa…

(考研湖科大教书匠计算机网络)第四章网络层-第六节1:路由选择协议概述

获取pdf:密码7281专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一:路由选择概述二:因特网采用的路由选择协议(1)特点(2)常见的路由选择协议三:…

CocoaPods使用指南

前言 对于大多数软件开发团队来说,依赖管理工具必不可少,它能针对开源和私有依赖进行安装与管理,从而提升开发效率,降低维护成本。针对不同的语言与平台,其依赖管理工具也各有不同,例如 npm 管理 Javascri…

【LeetCode】剑指 Offer 06. 从尾到头打印链表 p58 -- Java Version

题目链接: https://leetcode.cn/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/ 1. 题目介绍(06. 从尾到头打印链表) 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 【测试用例…