是否可以使用格式字符串参数的值作为其他参数的键?
mins = {'a': 2, 'b': 4, 'c': 3}
maxs = {'a': 12, 'b': 7, 'c': 21}
'{0} {1[{0}]} {2[{0}]}'.format('a', mins, maxs)
我希望a 2 12
但是会引发KeyError: '{0}'
,因为文字字符串{0}
用于查找,而不是a
。
查询可以在格式调用中完成,但是如果可以引用字符串中的其他位置参数,我就会完成。
key = 'a'
'{} {} {}'.format(key, mins[key], maxs[key])
答案 0 :(得分:2)
不,根据PEP3101,您无法嵌套替换字段:
格式说明符本身可以包含替换字段。对于 例如,字段宽度本身就是参数的字段可以是 指定通过:
"{0:{1}}".format(a, b)
这些“内部”替换字段只能以格式出现 替换字段的说明符部分。 内部替换字段 不能自己有格式说明符。 这也意味着 替换字段不能嵌套到任意级别。
您必须从格式字符串中移出该逻辑:
>>> '{0} {1} {2}'.format('a', mins['a'], maxs['a'])
'a 2 12'
但是,在Python3.6(目前处于alpha版)中,有一些特殊的format strings可以帮助解决这个问题:
>>> key = "a"
>>> mins = {'a': 2, 'b': 4, 'c': 3}
>>> maxs = {'a': 12, 'b': 7, 'c': 21}
>>> f'{key} {mins[key]} {maxs[key]}'
'a 2 12'