【发布时间】:2021-12-30 01:13:13
【问题描述】:
有什么方法可以使用默认值访问 OrderedDict 中不存在的键,就像我们在 defaultDict 中所做的那样
Ex.
od = OrderedDict({'a':1})
print(od['b']) # Output: KeyError: 'b'
这是KeyError在下面的实现中抛出的真正问题
l =['a','b','c','b']
od = OrderedDict({})
for k in l:
od[k] += 1 # KeyError
有意避免这种实现
for k in l:
if k in od:
od[k] += 1
else:
od[k] = 1
【问题讨论】:
-
这能回答你的问题吗? How to implement an ordered, default dict?
-
@Arne,提供的链接是关于新的自定义字典类型的实现。如果
OrderedDict中有任何可用的功能,或者在其他库中是否有类似于OrderedDict的任何其他可用类型,我正在尝试直接使用库中的功能 -
@JanPo 然后使用 defaultdict。它维护其插入顺序。你不需要 OrderedDict。
-
我明白这一点。我只是说,如果您需要 OrderedDict 的原因是为了维护密钥顺序,那么您实际上根本不需要它,因为 defaultdict 现在可以自己完成这一切(普通的 ol' dict 也是如此)。还是您需要专门使用 OrderedDict 的其他原因?
-
换句话说,如果您解释为什么需要 OrderedDict 而不是 defaultdict,我们可能会更好地为您提供帮助。
标签: python python-3.x