首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在dict.get()中使用变量值作为默认值是一种糟糕的模式吗?

在dict.get()中使用变量值作为默认值是一种糟糕的模式。这是因为dict.get()方法的默认值参数在每次调用时都会被计算,而不是在定义时就确定。如果默认值是一个可变对象(如列表、字典等),那么每次调用dict.get()时都会返回同一个对象的引用,可能导致意外的结果。

一个更好的做法是在定义时使用不可变对象作为默认值,例如None或者其他合适的默认值。如果需要使用变量值作为默认值,可以使用if语句或者三元表达式来处理。

以下是一个示例:

代码语言:txt
复制
my_dict = {'key1': 'value1', 'key2': 'value2'}
my_key = 'key3'
my_default = None

# 糟糕的模式
my_value = my_dict.get(my_key, my_default)

# 更好的做法
if my_key in my_dict:
    my_value = my_dict[my_key]
else:
    my_value = my_default

# 或者使用三元表达式
my_value = my_dict[my_key] if my_key in my_dict else my_default

这样可以避免意外的结果,并提高代码的可读性和可维护性。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云产品:https://cloud.tencent.com/product
  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版:https://cloud.tencent.com/product/cdb_mysql
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 云存储(COS):https://cloud.tencent.com/product/cos
  • 区块链服务(BCS):https://cloud.tencent.com/product/bcs
  • 腾讯云元宇宙:https://cloud.tencent.com/solution/virtual-universe
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

抛弃dict方式访问Python字典

Why: 为什么程序避免抛出异常如果在运行一个离线任务,需要跑好几个小时,但是在运行几个小时后,程序突然崩溃了,抛出了一个KeyError,这会导致之前结果全都失效,需要重跑。...']else:a = ""通过这样方式,可以避免访问到不存在key,缺点就是,需要每次都要先检查在使用,并根据不同类型设置不同默认值。...还有一种方式,就是dict.get()方法,实现了上面的需要。如果key不存在,不会抛出异常,会返回一个None,或者可以指定默认值。...使用dict.get()有如下好处:key存在,和dictkey有一样行为。key不存在,dict.get(key)不会抛出异常。key不存在,dict.get(key)会返回一个默认值。...我们还可以指定dict.get()方法默认值dict.get(key, defaultValue),比如:d = {'apple':4}x = d.get('apple') # 4y

22620

python|Pythondict

: 连接,; 3、字典可以存放不同数据类型。...二、特点 1.不可重复, 2.key必须使用不可变类型数据,一般使用字符串 3.key无序,字典查找速度快 三、用法 #创建一个空字典dict1 = {}#创建有多个元素字典dict1 = {...,程序不会报错, 会返回None#如果设置了第二个参数,第二个参数表示默认值, 当对应key不存在时,会返回#参数2,即默认值value = dict.get["张三"]value = dict.get...["赵六",23] #增加,修改#当key不存在时为增加,key值存在时为修改dict1["小明"] = 32dict1["张三"] = 19 #删除#pop可以根据key来删除字典元素,并返回删除元素值...中一种非常使用key-value数据集合,熟练掌握运用dict会给平时工作学习带来极大便利。

2.2K10
  • 理解PythonNoneType对象

    使用None 通常,None作为返回值或者某些参数值,比如在正则表达式,如果没有匹配对象,则返回None。...但Python变量不能单独存在,如果将变量与None建立引用关系,并非意味着该变量空。 None作为参数默认值 更多情况下,你看到可能是以None为默认参数值。...函数参数starter_list默认值一个空列表,这种方式不值得提倡,因为它会隐藏着一些BUG。...None作为值 什么时候None可以作为一个有效输入对象呢?例如在前面定义good_funciton函数,是否可以用None作为列表元素?...print(f"{key}->{value}") ... a->3 b->None None一种对象 前面提到过,某些语言中,null只是0符号表示,但是,Python,None一类对象,

    13.3K41

    Java 8 - Optional全解

    糟糕,发生 null 时返回默认值,即字符串“Unknown”在三个不同地方重复出现——出现拼写写错误概率不小!当然,你可能会说,我们可以用把它们抽取到一个常量方式避免这种问题。...使用 Optional 而不是 null 一个非常重要而又实际语义区别是,第一个例子,我们声明变量时使用 Optional 类型,而不是 Car 类型,这句声明非常清楚地表明了这里发生变量缺失允许...代码始终如一地使用 Optional ,能非常清晰地界定出变量值缺失结构上问题,还是你算法上缺陷,或是你数据问题。...---- 使用map从Optional对象中提取和转换值 从对象中提取信息一种比较常见模式。比如,你可能想要从 insurance 对象中提取名称。...那遭遇到了嵌套式 optional结构,该如何解决这个问题呢 让我们再回顾一下流上使用模式: flatMap 方法。

    50822

    python基础之字典访问

    ---- 一、背景   实际开发过程,我们会遇到需要将相关数据关联起来情况,例如,处理学生学号、姓名、年龄、成绩等信息。另外,还会遇到需要将一些能够确定不同对象看成一个整体情况。...---- 二、字典访问 1.根据键访问值   字典每个元素表示一种映射关系,将提供“键”作为下标可以访问对应“值”,如果字典不存在这个“键”则会抛出异常。...2.使用get()方法访问值   访问字典时,若不确定字典是否有某个键,可通过get()方法进行获取,若该键存在,则返回其对应值,若不存在,则返回默认值。...其语法格式如下: dict为被访问字典名 key要查找键 default定义默认值,如果指定键值不存在,返回该默认值,当default为空时,返回None dict.get(key[,default...get()获取学生年龄,返回值为None print(stu_info.get('age')) # 输出返回值None print(stu_info.get('age', 18)) # 设置返回默认值

    50310

    Python字典用法

    Python字典用法 注:以下所有示例使用Python3.5.版本 Python字典与C++map容器很相似,都是键值对形式存储,然而Python对字典操作远比C++对map操作要方便多...C++map与Python字典共同点唯一。...': 24, 'name': 'Tmac'} 2 fromkeys(seq, value=None)方法,创建一个新字典,以seq所有元素作为键,以value作为默认值。...值,若没有该键返回默认值默认值可指定 dict = {"name":"Tmac","age":24,'NBA':'kobe'} test = dict.get('name') print(test)...) print(test) 输出: 24 9 update(self, other=None, **kwargs)方法,使用一个字典元素更新另一个字典,若该键值存在则重写该键值对 dict

    2K10

    Python - 字典

    1、什么字典      字典无序可变对象集合 ,字典当中元素通过键来存取,而不是通过偏移存取。...字典一种映射类型,字典用 { } 标识,它是一个无序 键(key) : 值(value) 集合。...列表不能用作键 2、语法   使用字典字面值创建字典     使用 {} 来表示一个字典,里面允许出现若干键值对 # 创建空字典 ,两种方法   dict = {}...,则更新原有的值 book.update(book1) print(book) book2 = { "money": 119 } # 若传入字典不存在,则添加新键值对 book.update...(key):键存在则返回对应值,不存在则返回 None dict.get(key, default):键存在则返回对应值,不存在则返回设置好 default 值 栗子 # get book

    17840

    Python量化-如何获取实时股票信息

    如何获取实时股票信息 股票信息接口有很多,之前大家常用新浪,但在年初时候,新浪接口突然不能使用,给大家造成了很大困扰,为此网上也有很多教程教大家如何从新浪获取数据,跟着教程弄了半天也不行,...6位股票代码 0:上交所 1:深交所 2:北交所 先通过浏览器看下数据结构: _ntes_quote_callback({ "1000001": { "code": "1000001...", "yestclose": 14.2, "turnover": 1227798687.09 } }); 可以看出_ntes_quote_callback()就是标准...tick = NetEaseData.get_realtime_data('sz127045') print(tick.symbol, tick.name, tick.price) 使用也非常简单...NetEaseData.get_realtime_data:获取单个股票 NetEaseData.get_realtime_datas : 获取多个股票数据 这里我股票代码用兼容原有新浪模式,你可以自己做下修改

    1.6K50

    Python序列元素计数方法,你知道几种?

    我们在编写脚本时,或多或少使用上面的数据类型作为基本数据类型或自身容器,既然容器,必要时我们需要统计容器各元素出现次数。接下来,我给大家分享几种统计方法。...KeyError错误,我们需要使用dict.get方法代替,如下图: 使用dict.get....defaultdict类字典dict子类,第一个参数工厂函数,一个可调用对象,默认值None,第一次索引字典key时,由于它不在映射中,因此工厂函数会自动创建一个初始入口,本例整型int默认值...0,如果list,那么默认值为空列表[],如果集合,默认空集合{}等等,然后按照字典方式对其进行计数,下图文档字符串: 肆 >>>使用collections模块Counter类可以统计各元素次数...这大概最简单也是最便利解决方式了,Counter类也是字典dict子类,它接受一个可迭代对象或者映射作为参数,生成结果可以统计各元素次数,当然它也可以获取前N最多计数次数,如下所示: 以上就是统计元素频数几种方法

    1.4K100

    【说站】python get获取指定键值

    python get获取指定键值 说明 使用字典时,很少直接输出它内容。一般需要根据指定键得到相应结果。 1、Python推荐方法使用字典对象get()方法获取指定键值。...语法 dict.get(key[,default]) 参数 dict:字典对象,即要从中获取值字典。 key:字典要查找键。...default:可选参数,当指定键不存在时,返回默认值,如果省略 default 参数,则返回 None。 返回值 2、如果字典中键存在,则返回键所对应值。...如果键不存在,则返回default默认值。...)  # 获取"北京"天气报告,返回键对应值 以上就是python get获取指定键值方法,想要获取字典中键值小伙伴,赶快动手试试吧。

    1.3K20

    不容错过CSS变量

    scss、sass、less和stylus这些CSS预处理器不是都有变量机制? 为什么还要使用它?...过了几年,我发现越来越多的人开始讨论和使用它,我觉得我错过了什么…… 虽然花费了一点功夫,但在使用后,我确实被它吸引住了。...用法 选择器里面声明变量,变量名以--作为前缀: div { --bgColor: deeppink; } 一个流行方式:root选择器定义变量,这相当于定于全局变量: :root {...body元素上为不同主题创建不同类名,并定义合适变量值: body.sunrise { --background-color: #fff; --text-color: #333; }...因为笔者自己原创文章阅读量比较惨淡,所以笔者近期会尝试翻译一些文章,学习这些文章怎么写,也积攒点人气,以便后面原创文章有更多阅读量 扩展 使用CSS变量 Caniuse: CSS Variables

    85410

    精通MVC3摘译(2)-生成URL

    每一个路由都会被检查是否匹配,是否满足下面的3个条件: 1.URL模式定义片段变量值都存在,路由系统首先会从匿名对象属性值查找值,然后再当前请求变量值,最后路由中定义默认值。...2.我们提供片段变量值必须符合路由中默认变量,这些变量存在默认值,但是URL模式没出现,比如下面的,myVar一个默认变量 routes.MapRoute("MyRoute", "{controller...当我们描述路由匹配生成URL方法时,我们提到,尝试查找每个路由URL模式片段时,路由系统会从当前请求查找值,这个行为让很多程序困惑。...这还不只,路由系统将这一技术作为他自己匹配方法一部分。路由系统会为某些片段值重用URL模式中出现值,这些片段变量必须比 Html.ActionLink 方法中提供其他参数先出现。...由于colorpage前面出现,路由系统不会重用之前URL值,路由不会匹配。 处理这种行为最佳方法尽量避免这种事情发生。我们强烈建议你要依赖这种行为,为每个URL模式每个片段变量赋值。

    81210
    领券