如何编辑我的输出代码:
the 8512
and 7759
i 6182
to 6027
a 4716
of 4619
he 2873
in 2846
you 2777
was 2457
变为
1. the 8512
2. and 7759
3. i 6182
4. to 6027
5. a 4716
6. of 4619
7. he 2873
8. in 2846
9. you 2777
10. was 2457
我试图使用枚举函数
for rank, (value,num) in enumerate(sorted_list):
然而这给我留下了相同的输出。我可以以某种方式将排名附加到定义值和num的列表中吗?
d = dictionary(word_list)
def sort_key (d):
return d[1]
number = int(sys.argv[1])
sorted_list = sorted(d.items(), key=sort_key, reverse=True)[:number]
for (value,num) in sorted_list:
value = value.ljust(5)
num = str(num).rjust(5)
print("{}\t{}".format(value,num))
答案 0 :(得分:1)
您仍然使用enumerate()
;你没有表明你是如何使用它但它解决了你的问题:
for index, (value,num) in enumerate(sorted_list, start=1):
print("{}.\t{:<5}\t{:>5}".format(index, value,num))
我将str.ljust()
和str.rjust()
次来电折叠到了str.format()
模板中;这有一个额外的好处,它可以用于任何你可以格式化的值,而不仅仅是字符串。
演示:
>>> word_list = '''\
... the 8512
... and 7759
... i 6182
... to 6027
... a 4716
... of 4619
... he 2873
... in 2846
... you 2777
... was 2457
... '''.splitlines()
>>> d = dict(line.split() for line in word_list)
>>> sorted_list = sorted(d.items(), key=lambda i: i[1], reverse=True)
>>> for index, (value,num) in enumerate(sorted_list, start=1):
... print("{}.\t{:<5}\t{:>5}".format(index, value,num))
...
1. the 8512
2. and 7759
3. i 6182
4. to 6027
5. a 4716
6. of 4619
7. he 2873
8. in 2846
9. you 2777
10. was 2457