通过字典迭代X次

时间:2013-05-20 07:29:36

标签: python for-loop dictionary

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

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

4 个答案:

答案 0 :(得分: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]

答案 1 :(得分:1)

字典键上没有定义顺序,所以"首先"键没有明确定义。具体来说,您使用x.keys()[:10]更容易完成的工作。

答案 2 :(得分:0)

topten = sorted(x.items(), key=lambda x:-x[1])[:10]

答案 3 :(得分:0)

您可以使用以下代码对dict进行X遍历。

Python 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]))

不用担心整数和代码中增加整数的问题。您不需要它们。

简单,可读且可维护。