2024-10-02 22:33:07 发布
网友
这是我的字典:
d['any1'] = 15 d['any2'] = 27 d['any3'] = 84 d['any4'] = 12 d['any5'] = 7 .... d['any1243'] = 24
有什么python工具可以帮我从字典里的1243中找出30个最大的数字吗?你知道吗
谢谢。你知道吗
对于这么多的值,您可以使用以下几行代码:
import operator d = ... s = sorted(d.iteritems(), key=operator.itemgetter(1), reverse=True) print s[:30]
最好使用^{} object;Counter来支持这个用例,并使用^{} method:
Counter
Return a list of the n most common elements and their counts from the most common to the least.
from collections import Counter counts = Counter(d) for key, freq in counts.most_common(30): print key, freq
在这里,实际上使用Counter()对象而不是d的。Counter对象是dict子类,因此在跟踪每键频率时,可以使用它们作为插入式替换,尽管在许多情况下,它们使项目计数更容易。你知道吗
Counter()
d
dict
如果您使用的是常规词典,那么您可以使用^{} module,特别是^{} function,自己实现此功能:
import heapq from operator import itemgetter thirty_largest = heapq.nlargest(30, d.iteritems(), key=itemgetter(1))
其中thirty_largest是30个键值元组的列表:
thirty_largest
>>> import heapq >>> from operator import itemgetter >>> import random >>> d = {'any{}'.format(i): random.randrange(5000) for i in range(1243)} >>> for key, value in heapq.nlargest(30, d.iteritems(), key=itemgetter(1)): ... print '{:<7} {:>4}'.format(key, value) ... any1226 4997 any1150 4997 any1225 4993 any401 4992 any949 4988 any130 4978 any1069 4977 any96 4974 any955 4974 any229 4970 any1117 4966 any883 4964 any937 4961 any729 4958 any981 4958 any7 4952 any1045 4952 any600 4950 any134 4948 any16 4937 any312 4937 any1158 4937 any1238 4932 any315 4932 any875 4930 any339 4930 any295 4926 any878 4925 any343 4922 any681 4917
对于这么多的值,您可以使用以下几行代码:
最好使用^{} object ;} method :
Counter
来支持这个用例,并使用^{在这里,实际上使用
Counter()
对象而不是d
的。Counter
对象是dict
子类,因此在跟踪每键频率时,可以使用它们作为插入式替换,尽管在许多情况下,它们使项目计数更容易。你知道吗如果您使用的是常规词典,那么您可以使用^{} module ,特别是^{} function ,自己实现此功能:
其中
thirty_largest
是30个键值元组的列表:相关问题 更多 >
编程相关推荐