【发布时间】:2015-05-18 10:40:28
【问题描述】:
如何编辑我的代码,以便我的输出:
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):
然而,这让我得到相同的输出。我可以以某种方式将排名附加到定义 value 和 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))
【问题讨论】:
-
你能告诉我们你是如何使用
enumerate()的吗?这正是你应该使用什么来添加行数。 -
@MartijnPieters 通过在 enumerate(sorted_list) 中声明排名,(value,num):代替 sorted_list 中的 for (value,num):
-
但是你得到了你想要的
rank值,尽管差一。看我的回答;我给enumerate()一个start参数以从1 而不是0 开始计数,但您确实需要确保打印rank值。即使没有start,您仍然可以轻松地将生成的排名加 1。 -
请注意,对strings进行排序将导致按字典顺序排序,不是数字!对于使用相同位数的数字,这很好,但当您有更短或更长的序列时就不行了。
标签: python list sorting python-3.x tuples