用于通过最长键对字典进行循环填充打印语句

问题描述 投票:0回答:1

所以我有这个名称和值的字典,我想用最长的键的长度填充之间的空格来打印。

下面的代码满足我的要求,但是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 for-loop string-formatting f-string
1个回答
1
投票

[新样式的字符串格式是在最新版本的python(3.6)中引入的,并且您似乎正在将该样式(f-strings)与较旧的样式(str.format)混合在一起。

f字符串样式解决方案就是您链接到的东西。

[如果您使用的是python的旧版本,并且想使用str.format,我只是进行了实验并找到了以下解决方案:'{0:{1}}'.format(k, longest_key)0引用第一个参数(k),1引用第二个参数longest_key

© www.soinside.com 2019 - 2024. All rights reserved.