gpt4 book ai didi

python - 在 Python 字典中查找最频繁的值(具有最大计数的值)

转载 作者:太空宇宙 更新时间:2023-11-04 09:49:05 24 4
gpt4 key购买 nike

我正在尝试编写一个函数,该函数返回 Python 字典中出现次数最多的值。 我不想导入任何东西,只是简单的代码。

有什么想法吗?例如,如果我的字典是:

input_dict = {'A': 1963, 'B': 1963, 
'C': 1964, 'D': 1964, 'E': 1964,
'F': 1965, 'G': 1965, 'H': 1966,
'I': 1967, 'J': 1967, 'K': 1968,
'L': 1969 ,'M': 1969,
'N': 1970}

预期结果是1964(因为它在 dict 中作为值出现了 3 次(最大计数))

这是我最后一次尝试:

def most_prolific(input_dict):

values = []
for year in input_dict.values():
if year in input_dict.values():
values.append(year)


for most in values:
if most in values:
return max(values.count(most))

最佳答案

使用collections.Counter :

实现此目的的最简单方法是使用 Python 的内置 collections.Counter这是出于相同目的而创建的。以下是您的示例的示例代码:

from collections import Counter 
input_dict = {'A': 1963, 'B': 1963, 'C': 1964, 'D': 1964, 'E': 1964, 'F': 1965, 'G': 1965, 'H': 1966, 'I': 1967, 'J': 1967, 'K': 1968, 'L': 1969 ,'M': 1969, 'N': 1970}

value, count = Counter(input_dict.values()).most_common(1)[0]
# in above code, `value` will hold value `1964` <--- one you desire
# and `count` will hold value `3`

使用中间字典(没有导入)

这是另一个没有导入任何模块。在这里,我使用 dict 创建我自己的计数器:

my_counter_dict = {}
for v in input_dict.values():
my_counter_dict[v] = my_counter_dict.get(v, 0)+1

# Value hold by `my_counter_dict`:
# {1963: 2, 1964: 3, 1965: 2, 1966: 1, 1967: 2, 1968: 1, 1969: 2, 1970: 1}

从上面的 dict 中,使用 max 提取具有最大值的键用作:

>>> max(my_counter_dict.iterkeys(), key=my_counter_dict.get)
1964

不使用中间字典(没有导入)

这是另一种不创建中间字典的替代方法,但由于列表中每个元素的 list.count 而导致列表的一次完整迭代,因此效率相对较低:

>>> values_list = list(input_dict.values())
>>> max(set(values_list), key=values_list.count)
1964

关于python - 在 Python 字典中查找最频繁的值(具有最大计数的值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48606406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com