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 次 |
| 最近记录: |