Python 中如果键不存在,则将键添加到字典

news2024/11/17 3:39:13

文章目录

    • 使用 not in 检查键是否存在
    • 如果字典不存在则使用 dict.get() 添加键到字典
    • 如果字典不存在,则使用 setdefault() 将键添加到字典中


使用 not in 检查键是否存在

如果字典不存在,则将键添加到字典中:

  1. 使用 not in 运算符检查键是否不在字典中。
  2. 如果满足条件,则使用括号表示法添加密钥。
  3. 仅当键不存在时才会添加新的键值对。
my_dict = {
    'site': 'jiyik.com'
}

key = 'topic'

if key not in my_dict:
    my_dict[key] = 'Python'

# 👇️ {'site': 'jiyik.com', 'topic': 'Python'}
print(my_dict)

我们使用 not in 运算符来检查字典中是否不存在键。

与字典一起使用时,in 运算符会检查字典对象中是否存在指定键。

my_dict = {
    'site': 'jiyik.com'
}

print('site' in my_dict)  # 👉️ True
print('topic' in my_dict)  # 👉️ False

print('site' not in my_dict)  # 👉️ False
print('topic' not in my_dict)  # 👉️ True

x not in s 返回 x in s 的否定。

如果键不在字典中,我们使用括号表示法来添加它。

或者,我们可以使用 dict.get() 方法。


如果字典不存在则使用 dict.get() 添加键到字典

如果字典不存在,则将键添加到字典中:

  1. 使用 dict.get() 方法获取给定键的值。
  2. 如果键不在字典中,则设置要返回的默认值。
  3. 将结果分配给字典中的键。
my_dict = {
    'site': 'jiyik.com'
}

key = 'topic'

my_dict[key] = my_dict.get(key, 'Python')
print(my_dict)  # 👉️ {'site': 'jiyik.com', 'topic': 'Python'}

key = 'site'

my_dict[key] = my_dict.get(key, 'google.com')
print(my_dict)  # 👉️ {'site': 'jiyik.com', 'topic': 'Python'}

如果键在字典中,则 dict.get 方法返回给定键的值,否则返回默认值。

my_dict = {
    'site': 'jiyik.com'
}

# 👇️ jiyik.com
print(my_dict.get('site', 'default value'))

# 👇️ default value
print(my_dict.get('another', 'default value'))

该方法采用以下 2 个参数:

  • key 要为其返回值的键
  • default 如果字典中不存在提供的键,则返回默认值(可选)

如果未提供默认参数的值,则默认为 None,因此 get() 方法永远不会引发 KeyError

在语句中,我们使用 dict.get() 方法获取给定键的值。

如果键存在于字典中,则返回其值。如果密钥不存在,它将被设置为提供的默认值。

my_dict = {
    'site': 'jiyik.com'
}

key = 'topic'

my_dict[key] = my_dict.get(key, 'Python')
print(my_dict)  # 👉️ {'site': 'jiyik.com', 'topic': 'Python'}

然而,这种方法比使用带有成员测试的 if 语句更含蓄和更间接。

或者,我们可以使用 dict.setdefault() 方法。


如果字典不存在,则使用 setdefault() 将键添加到字典中

如果字典不存在,则将键添加到字典中:

  1. 使用 dict.setdefault() 方法为键设置默认值。
  2. 如果该键不存在,则会添加指定的值。
  3. 如果密钥存在,则它保持不变。
my_dict = {
    'site': 'jiyik.com'
}

my_dict.setdefault('site', 'google.com')
print(my_dict)  # 👉️ {'site': 'jiyik.com'}


my_dict.setdefault('topic', 'Python')
print(my_dict)  # 👉️ {'site': 'jiyik.com', 'topic': 'Python'}

setdefault 方法接受一个键和一个默认值作为参数。

如果键在字典中,则该方法返回其值。

如果该键不在字典中,该方法将插入具有指定值的键。

如果我们不指定默认值,则使用 None。

指定的键只有在不存在的情况下才会被添加到字典中。

我们可能还会在网上看到使用字典合并运算符或将键值对解包到新字典中的示例。

my_dict = {
    'site': 'jiyik.com'
}

new_dict = my_dict | {'topic': 'Python', 'site': 'google.com'}
print(new_dict)  # 👉️ {'site': 'google.com', 'topic': 'Python'}

# -----------------------------------------------------------

new_dict = {'topic': 'Python', 'site': 'google.com'} | my_dict
print(new_dict)  # 👉️ {'topic': 'Python', 'site': 'jiyik.com'}

合并 | 运算符用于合并两个字典,右边的字典优先。

第一个示例显示了在合并两个词典时如何覆盖现有词典中的站点键。

我们可以切换顺序并将现有词典放在右侧,因此它具有优先权,但这很难阅读且不直观。

使用字典解包 (**) 语法可以实现相同的目的。

my_dict = {
    'site': 'jiyik.com'
}

new_dict = {**my_dict,  **{'topic': 'Python', 'site': 'google.com'}}
print(new_dict)  # 👉️ {'site': 'google.com', 'topic': 'Python'}

new_dict = {**{'topic': 'Python', 'site': 'google.com'},  **my_dict}
print(new_dict)  # 👉️ {'topic': 'Python', 'site': 'jiyik.com'}

Python 中如果键不存在,则将键添加到字典

我们使用字典解包 ** 运算符将两个字典的键值对解包为第三个。

第二个字典的键值对覆盖第一个字典的键值对。

我们选择哪种方法是个人喜好的问题。 我会使用一个简单的 if 语句来检查键是否不在字典中。

我发现 if 语句方法是最直接和直观的。

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

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

相关文章

如何用ChatGPT写文章?只需要这3步,10倍提升写作效率

随着技术的不断进步和创新,我们的生活方式和工作方式也在不断变化。在日常工作中,越来越多的人使用人工智能和机器学习等技术提高效率减少时间成本。最近ChatGPT火出圈了,很多人通过使用ChatGPT提高了工作效率。那么,在写作领域&a…

【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点 p269 -- Java Version

题目链接:https://leetcode.cn/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/ 1. 题目介绍( 54. 二叉搜索树的第k大节点) 给定一棵二叉搜索树,请找出其中第 k 大的节点的值。 【测试用例】: 示例 1: 示例2&…

UTONMOS:打造你的梦想,开启元宇宙无限彩排的游戏时代

有人认为,元宇宙不过是 VR 概念的“旧瓶换新酒式”的炒作。 有人认为,元宇宙是被资本和巨头绑架的另一场“游戏”。 有人认为,元宇宙是骗局,是智商税。 更多人对元宇宙的评价是“呵呵”。 媒体朋友对元宇宙的描述更具艺术性&a…

详解FreeRTOS中的软件定时器

软件定时器用于让某个任务定时执行,或者周期性执行。比如设定某个时间后执行某个函数,或者每隔一段时间执行某个函数。由软件定时器执行的函数称为软件定时器的回调函数。 参考资料: 《Mastering the FreeRTOS™ Real Time Kernel》——Cha…

vue2、vue3使用i18n实现国际化

一、目标效果 源码地址:git clone i18n-demo: vue2、vue3实现i18n国际化功能 默认语言是中文: 点击语言切换,变成英文(这里简单设置了中文、英文两种语言) 注意:vue2支持 vue-i18n 版本8.0 ,vu…

本轮沙尘已跨过长江!这些地区请注意加强防范

气象台4月12日06时继续发布沙尘暴蓝色预警:受冷空气大风影响,预计4月12日08时至13日08时,新疆南疆盆地和东部、内蒙古中西部、甘肃河西和中部、宁夏、陕西中部、山西、河北、辽宁、北京、天津、山东、河南、安徽、江苏、上海、湖北中北部、浙…

漏洞利用之弱口令

漏洞利用之弱口令1.弱口令的定义2.弱口令字典生成收集用户信息,组成爆破字典特殊字符增强的字典生成字典生成项目3.利用 Burp Suite 进行密码爆破1.弱口令的定义 弱口令没有严格和准确的定义,通常认为容易被别人猜测到或被破解工具破解的口令均为弱口令…

【Mysql】mysql8.0.26解压包部署方式

版本背景: 操作系统:centos7.3 mysql版本:mysql-8.0.26-linux-glibc2.12-x86_64.tar 一、前期准备 1、检测操作系统自带安装的mysql和mariadb服务,如存在,需卸载 rpm -qa | grep mysql rpm -qa | grep mariadb 卸载…

vim编辑器使用

目录 vim基本概念 vim基本操作 插入模式 命令模式 移动光标 删除字符 复制剪切 替换 撤销 更改 移动指定行 底行模式 命令集 vim简单配置 vim基本概念 vim编辑器有三种模式: 命令模式:光标移动,字符或行移动&#x…

iTOP-RK3568开发板Android kernel移植-单独编译内核

此方法常用于 kernel 的开发和调试,以下的方法既编译 kernel 部分时, 同 时打包成 boot.img, 这样加快了我们开发的速度; 进入内核目录下, 输入以下命令: cd kernel make ARCHarm64 CC../prebuilts/cla…

Vue:axios

1、 第三方库方式, 基于 Promise 的 HTTP 库:axios (对 XMLHttpRequest进行的封装) 即: axios.get().then() 2、跨域访问 定义:在 a 页面中想获取 b 页面中的资源,如果 a 页面和 b 页面所处的协…

Java基础从入门到精通系列(一)

1、Java简介 Java语言是一种高级、并发、面向对象的计算机编程语言,由Sun Microsystems公司于1995年推出。Java广泛应用于Web应用程序开发、移动应用程序开发以及大型企业级应用程序的开发中。Java语言具有跨平台、安全性好、可移植性强、易学易用等优点&#xff0…

JavaSE学习进阶day04_01 Date类

第一章 Date类 首先对时间的几个补充有必要知道: 时间起点: 心得: 如果以后我们仅仅要展示时间,那么可以用Date和SimpleDateFormat(格式化) 如果我们要拿着两个时间进行计算,用Date和SimpleD…

【C++升级之路】第十二篇:模板进阶 | 非类型模板参数 模板特化 类模板的分离编译 模板优缺点总结

🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【C学习与应用】 ✒️✒️本篇内容:非类型模板参数,函数模板特化,类模板特化(全特化,部分特化&a…

【系统集成项目管理工程师】信息系统集成专业知识

信息系统集成专业技术 一 信息系统建设 1 信息系统生命周期 立项阶段:即概念阶段或需求阶段,这一阶段根据用户业务发展和经营管理的需要,提出建设信息系统的初步构想,然后对企业信息系统的需求进行深入调研和分析,形…

K8s结合docker部署

原生安装步骤 安装必要的环境依赖与工具 sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg \lsb-release下载证书更新 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-key…

Linux基础命令-seq打印数字序列

Linux基础命令-sed流编辑器 前言 seq命令通常是用来打印一串有规律的数字,常与其他命令搭配使用,一起来看下它的用法。 一. 命令介绍 在doc文档中查看seq命令的含义 NAMEseq - print a sequence of numbers DESCRIPTIONPrint numbers from FIRST to…

4.14-4.16学习总结

多线程: 线程: 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 进程: 进程是程序的基本执行实体 举个例子:360运行之后,它就可以看做是一个进程,但…

【UE4】关卡流送的demo

关卡流送功能可以将地图文件加载到内存中,或者从内存中卸载,并在游戏过程中切换地图的可视性。 这样一来,场景便能拆分为较小的地图块,并且只有相关部分才会占用资源并被渲染。 正确设置后,开发者便能创建大型、无缝衔…

c++STL容器之序列式容器

目录 vector容器 vector对象的默认构造 vector的初始化 vector的遍历 vector的增删改查 vector末尾的添加移除操作 vector的数据存取 deque容器 deque对象的默认构造 deque末尾的添加移除操作 deque的数据存取 stack容器 stack对象的默认构造 stack的push()与po…