1

假设字典包含超过 10 个键值对。字典应该按值(整数)排序​​。打印出前 10 个值(和相应的键)。我认为有一个比我在这里给出的更好的解决方案。

for keys in sorted(x):
   c=c+1
   if c>10:
      break
   else:
      print keys, x['keys']
4

4 回答 4

5
for key in sorted(x, key=x.get, reverse=True)[:10]:
    print key, x[key]

对于非常大dict的,您应该考虑使用 heapq

from heapq import nlargest
for key in nlargest(10, x, key=x.get):
    print key, x[key]
于 2013-05-20T07:41:15.827 回答
1

字典键没有定义顺序,因此“第一个”键没有很好地定义。具体来说,您所做的更容易使用x.keys()[:10].

于 2013-05-20T07:32:24.303 回答
0
topten = sorted(x.items(), key=lambda x:-x[1])[:10]
于 2013-05-20T07:37:33.913 回答
0

您可以使用以下代码迭代dictX 次。

蟒蛇 3.8

def highest_contributor(self, top=1):
    slice_dict_only_to_keys = list(self.contributors.keys())[:top]
    for _key in slice_dict_only_to_keys:
        self.log("Top Contributor: {} ({})".format(_key, self.contributors[_key]))

不要担心整数和用你的代码递增它们。你不需要它们。

简单、可读和可维护。

于 2020-02-04T07:33:25.787 回答