【发布时间】:2014-03-26 14:13:36
【问题描述】:
我有一个关于格式化输出的问题。可能很简单,但我已经研究了大约 10 个小时,所以我无法弄清楚为什么它不起作用
elif command.startswith("TOP") and len(command) > 3:
digi_trans = str.maketrans('', '', string.digits)
char_trans = str.maketrans('', '', string.ascii_letters)
bracket_trans = str.maketrans('', '', "[']")
subset = command.translate(digi_trans)[3:]
if subset == "EDITORS":
top_names = []
count = 0
count_limit = int(command.translate(char_trans))
top_names = sorted(name_temp.items(), key=lambda x:x[1], reverse=True)
largest = heapq.nlargest(count_limit, top_names, key=operator.itemgetter(1, 1))
print(largest)
这是我的代码中弄乱我的部分。 top_names 列表只是两个项目对的排序列表,一个名称和一个值。
它当前输出这个(假设我想要命令中的前 2 个值):
[('Tzartzam', [16]), ('Quercusrobur', [14])]
我希望它输出如下内容:
--------------------
Tzartzam [16]
Quercusrobur [14]
--------------------
有趣的是,我的程序的一部分已经做了几乎完全相同的事情,但我就是不明白我在做什么不同,所以如果有人能指出我,我会很感激正确的方向:(
【问题讨论】:
-
该代码中只有一行与您的问题相关!另外:“我的程序的一部分已经做了几乎完全相同的事情” - 所以让它成为一个函数,并从两个地方调用它。
-
我试过了,但由于某种原因,它总是给我一个列表索引超出范围的错误。我敢肯定我只是太累了,因为这个原因它就在我的头上飞来飞去,因为它看起来真的很简单。
-
我们无法告诉您此代码与您程序的其他部分之间的区别,因为您没有发布其他部分。据我们所知,它正在调用
print nice_formatted(largest),而你这次忘记调用它了。 -
最大的唯一出现的地方就是这里,就是我给heapq函数起的名字。我按照 jonrsharpe 的建议做了,并将另一段代码变成了一个函数,它运行良好!我什至不需要改变太多
标签: python string list format output