代码:
d={1:'Number1','1':'String1','d1':{'a1':'numberindict1','b1':'stringindict1'}}
怎么用format_map打印第一个和第二个键值:
>>> print('{d1}'.format_map(d))
{'a1': 'numberindict1', 'b1': 'stringindict1'}
>>> print('{1}'.format_map(d))
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
print('{1}'.format_map(d))
ValueError: Format string contains positional fields#与位置格式化冲突了怎么解决
有没有办法使用字典d直接将d的元素及其下字典的元素用format_map一次输出?
存在整数键值就不能使用这种 S.format_map 的方式了,因为 format 中的 {n} 语法已经用来表示取第 n 个位置参数的值,如下:
>>> '{2}{1}{0}'.format('a', 'b', 'c'){n} 语法的优先级是高于 format_map 的。
追问1、这种冲突我也了解,就是有没有特殊方法可以解决?
2、第二个问题,字典中嵌套字典能否在一个format_map中将嵌套的字典下层元素和非嵌套的当层元素中格式化?
3、还有一个问题,是否format_map访问的字典元素必须是字符串的?
我暂时不知道有好的解决办法,推荐使用f-string,3.7开始支持
不能
是的,其他的都会引发错误