可以将dict.get()嵌套在另一个内部吗?或者这是不好的设计?

问题描述 投票:2回答:3

所以,我正在一个代码库上工作,其中词典包含一些关键信息。在开发过程中的某个时刻,其中一个键的名称已更改,但是较旧的键仍然存在于许多地方。让我们调用键newold作为参考。

为了使其与旧版本兼容,我正在做类似的事情:

dict.get(new_key,dict.get(old_key,None))

这个设计不好还是可以吗?为什么/为什么不呢?

python dictionary default
3个回答
0
投票

dict.get正是出于这个原因在这里,因此如果键不在其中,则可以使用默认值。

具有双重后备功能非常好。例如:

d = {}
result = d.get('new_key',d.get('old_key', None))

这意味着在最坏的情况下,resultNone,但没有错误(这首先是get的目标。

换句话说,它将new_key的值作为第一优先级,old_key的优先级作为第二优先级,None的优先级作为第三优先级。


0
投票

这是一种合理的方法。唯一的缺点是它将对两个键都执行get,这在大多数情况下不会影响性能。

我唯一的笔记是挑剔:

  • dict是保留字,因此请勿将其用作变量
  • None是默认设置,因此可以将其删除以表示old_key,例如:
info.get('a', info.get('b'))

-1
投票

对于您的情况,我认为可以像以前一样使用密钥。只是为了使其更具可读性,您可以这样做:

old_key=d.get(old_key,None)
d.get(new_key, old_key)
© www.soinside.com 2019 - 2024. All rights reserved.