【发布时间】:2016-01-28 22:14:24
【问题描述】:
我正在运行 Python 2.7.10。
我想让字典返回存储在特定键中的值,以防丢失项目。例如,类似的东西:
myD = dict(...)
return myD[key] if key in myD else myD[defaultKey]
为了确保清楚,我想调用 myD[key] 并返回正确的值,而我的代码中没有额外的 if...else...
这不是defaultdict 所做的(因为它需要一个函数作为默认调用),也不是dict.setdefault() 所做的,myD.get(key, ???) 似乎也没有帮助。我可能应该从dict 或defaultdict 继承并重载__init__() 和missing() 方法,但我想不出一个好方法来做到这一点。
【问题讨论】:
-
您的问题是什么?你说得对,
dict.get不会那样做;如果您想知道如何编写自己的代码,请查看docs.python.org/2/library/… 并相应地实现__getitem__。但是defaultKey应该从哪里来(是参数吗?是类的属性,还是实例的属性?) -
@jonrsharpe 是的,这是我的问题,如何实现。我不确定如何在这种情况下使用 ABC
-
@jonrsharpe 是的,
defaultKey是初始化时的参数,实例应存储为属性 -
您继承它们,然后实现它们指定的方法(在本例中为
__[get/set/del]item__、__iter__和__len__,加上您自定义的__init__用于默认键值对)。 -
@jonrsharpe 我希望我可以通过从一个现成的对象(如
defaultdict)继承来获得一些更简单的东西,然后覆盖__getitem__,在其他地方留下相同的功能......
标签: python python-2.7 dictionary default default-value