所以我有这个名称和值的字典,我想用最长的键的长度填充之间的空格来打印。
下面的代码满足我的要求,但是17是我的单元测试中的硬编码,我想用变量longest_key替换它。
longest_key = max(len(x) for x in sorted_dict)
# longest_key is 17 for unit test
for k, v in sorted_dict:
print("{0:<17}".format(k), v)
我尝试做这里写的:https://stackoverflow.com/a/54605046/2415706
喜欢:
print("{0:<{longest_key}}".format(k), v)
并且还使用了global关键字,但是我在longest_key上一直遇到关键错误。谢谢!
更新:对于阅读此书的任何人,此打印将f字符串(虽然缺少f……)和.format混合在一起。 f弦是最新的东西,而且最清晰易读,因此。它应该看起来像:
print(f"{k:<17} {v}")
我的任务的下一部分是随机奖励,如果必须对值运行函数,则可以在{}内执行此操作,如:
print(f"{some_function(k):<17} {some_other_function(v)}")
[新样式的字符串格式是在最新版本的python(3.6)中引入的,并且您似乎正在将该样式(f-strings)与较旧的样式(str.format)混合在一起。
f字符串样式解决方案就是您链接到的东西。
[如果您使用的是python的旧版本,并且想使用str.format
,我只是进行了实验并找到了以下解决方案:'{0:{1}}'.format(k, longest_key)
。 0
引用第一个参数(k
),1
引用第二个参数longest_key
。