在给定频率的python词典中获取最频繁的项目

Qua*_*Liu 3 python dictionary list

在给定每个元素的频率的情况下,如何返回字典中最常出现的元素?例如,在下面的列表中,我想通过第一个频率返回最频繁出现的元素,并且通过第二个频率返回最频繁出现的元素?

dictionary = {"first": [30, 40], "second": [10, 30], "third": [20, 50] }
Run Code Online (Sandbox Code Playgroud)

因此该方法findMostFreqFirst(dictionary)将返回"first",该方法findMostFreqSecond将返回"third".有没有办法可以使用最有效的代码量来做到这一点?(我写这篇文章是一个更大的程序的一部分,所以我不想为这两个函数编写大量的代码.谢谢!

fal*_*tru 6

使用maxkey关键字参数:

>>> dictionary = {"first": [30, 40], "second": [10, 30], "third": [20, 50] }
>>> max(dictionary, key=lambda key: dictionary[key][0])
'first'
>>> max(dictionary, key=lambda key: dictionary[key][1])
'third'
Run Code Online (Sandbox Code Playgroud)

第一个可以写成如下,因为列表比较是按字典顺序完成的.([30, 40] > [20, 50])

>>> max(dictionary, key=dictionary.get)
'first'
Run Code Online (Sandbox Code Playgroud)

  • 我会做`max(dictionary.keys()`...不知道你可以做`max(字典)`.谢谢! (2认同)