JPG*_*JPG 4 python python-3.x defaultdict keyerror
我KeyError在使用collections.defaultdictwith.format()方法时得到了
外壳执行
In [1]: from collections import defaultdict
In [2]: foo = "Foo: {foo}\nBar: {bar}"
In [3]: default = defaultdict(lambda: 0)
In [4]: foo.format(**default)
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-4-799cab129cf2> in <module>
----> 1 foo.format(**default)
KeyError: 'foo'
Run Code Online (Sandbox Code Playgroud)
我不期待 aKeyError因为我使用的是defaultdict. 为什么会发生这种情况?
除此之外,我想foo用一些默认值填充变量,我该怎么做?
Sha*_*ger 11
使用**拆包转换为真正的dict(或功能相当的不相关的数据结构;实现细节嘉豪),这样的功能defaultdict没有得到使用。在这种情况下,您可以改为使用str.format_map,它接受(无需解包)任意映射,而不会将其强制为dict。它正是为此目的而存在的(引用文档:“如果例如mapping是 dict 子类,这很有用”):
In [5]: foo.format_map(default)
Out[5]: 'Foo: 0\nBar: 0'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
131 次 |
| 最近记录: |