-2

我想出了这个程序,但它不起作用。我需要确定列表中出现最多的值。例如,捕食者吃掉的猎物最多。任何帮助都会很棒。谢谢!

max_value=0
for pred in dictionary:
     for prey in dictionary[pred]:
         if len(dictionary[pred]) >= max_value:
       max_value= len(dictionary[pred])
       p=prey
       print(p)
4

2 回答 2

1

您可以使用collections.Counter

dictionary = {'a':1, 'b':42, 'c':3, 'd':42}

from collections import Counter

cntr = Counter(value for value in dictionary.values())
print cntr.most_common(1)

输出:

[(42, 2)]

其中显示了最常见的值以及它出现的次数。请注意,可能存在联系,您可能需要对返回的结果进行进一步处理most_common()

于 2012-12-07T01:29:37.003 回答
0

你可以看看heapq得到最长的n:

>>> d = {1: [1, 2], 2:[2,3,4])
>>> heapq.nlargest(1, d.iteritems(), key=lambda (k,v): len(v))
(2, [2, 3, 4])

或使用max

>>> max(d.iteritems(), key=lambda (k,v): len(v))
(2, [2, 3, 4])

但是,将为您提供长度相等的值的任意结果。

于 2012-12-07T00:55:27.403 回答