Wel*_*lls 2 python dictionary string-formatting default-value
这很容易:
'foo {bar}'.format(**{'bar': 0})
Run Code Online (Sandbox Code Playgroud)
这不起作用,产生一个KeyError
:
from collections import defaultdict
d = defaultdict(int)
'foo {bar}'.format(**d)
Run Code Online (Sandbox Code Playgroud)
有没有办法容纳defaultdict
字符串格式?
**
拆包产生一个dict
,这就是为什么这不起作用.如果你正在运行Python 3.2或更高版本,你可以传递defaultdict
没有解包的str.format_map
存在,这正是为了传递非dict
映射类型:
'foo {bar}'.format_map(d)
Run Code Online (Sandbox Code Playgroud)
编辑:显然,至少在Python 3.5中,'foo {bar}'.format(**d)
实际上可以使用a defaultdict(int)
,并且d
被修改(在格式化之后,repr
是defaultdict(<class 'int'>, {'bar': 0})
),所以它看起来像在现代Python中,format_map
可能不是子类的必需dict
.有趣.
归档时间: |
|
查看次数: |
438 次 |
最近记录: |