Python中字典中存在整数键值能使用fomat_map进行格式化字符串吗?如果字典内嵌字典又怎么格式化?

代码:
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')
'cba'

{n} 语法的优先级是高于 format_map 的。

追问

1、这种冲突我也了解,就是有没有特殊方法可以解决?
2、第二个问题,字典中嵌套字典能否在一个format_map中将嵌套的字典下层元素和非嵌套的当层元素中格式化?
3、还有一个问题,是否format_map访问的字典元素必须是字符串的?

追答

    我暂时不知道有好的解决办法,推荐使用f-string,3.7开始支持

    不能

    是的,其他的都会引发错误

温馨提示:答案为网友推荐,仅供参考
相似回答