【问题标题】:Python 3: How to find the most occured value in the dictionary? [closed]Python 3:如何在字典中找到出现次数最多的值? [关闭]
【发布时间】:2017-11-20 00:39:37
【问题描述】:

我正在尝试制作一个程序,当给定这样的字典时-

    sports_played={sam:baseball,john:tennis,dan:tennis,joe:cricket,drew:tennis,mark:baseball}

应该返回网球,即最常玩的运动,即字典中出现次数最多的值。

如果问题有问题,请提前道歉。这是我的第一个问题。

【问题讨论】:

  • 为什么不导入任何东西的任意限制?这听起来像是家庭作业,您应该自己尝试。
  • 这是一个基本的家庭作业类型的问题。到目前为止你做了什么?
  • print(max(eaters.values()))
  • 事实上,这个问题得到回答的可能性很小:您提供的(单行)代码是无效的 Python 代码,并且您没有表现出任何研究工作。请查看How to create a Minimal, Complete, and Verifiable example,以符合本网站的提问指南。

标签: python python-3.x loops dictionary for-loop


【解决方案1】:

如果我们假设eaters 是一个字典,那么:

eaters={'chicken':5,'meat':7,'rice':3} 
max(eaters.values())

结果: 7

在现实世界中,您不会使用循环来实现这一点。

查看eaters 中可供您使用的内容

dir(eaters)
['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values', 'viewitems', 'viewkeys', 'viewvalues']

eaters.keys()
['chicken', 'rice', 'meat']
eaters.values()
[5, 3, 7]

循环版本:

x=0
for i in eaters.values():
    if i > x:
        x = i
print i
7

【讨论】:

  • 在回答之前,您可以先阅读上面的 cmets 吗?这家伙要求你为他的作业提供解决方案。
  • 我将其视为一种心理锻炼。如果你整天捣泥,脑力锻炼可以保持大脑清洁。
  • 不,因为网站政策是这样写的
  • 哦,我的...你真的认为你可以将那个人的问题与这个进行比较吗?你没有看到它是如何表达的,并告诉我们他累了什么以及为什么它不起作用?没有亲自尝试,他没有直接要求答案。这个人没有尝试过,并期待有人给他们一个答案。了解区别:)
  • 是的,因为我确实标记了它,但我仍然回答,因为该人至少尝试过
【解决方案2】:

如果要获取最大元素的key,即meat,可以使用如下代码:

>>> list(eaters.keys())[list(eaters.values()).index(max(eaters.values()))]
>>> 'meat'

【讨论】:

    【解决方案3】:

    如果您查看dir(dict),您会看到一个有趣的方法可以在dict class/object 中使用,即dict.get()

    所以,如果你在 python 解释器中输入help(dict.get),你会得到:

    关于method_descriptor的帮助:

    得到(...) D.get(k[,d]) -> D[k] 如果 k 在 D 中,否则 d。 d 默认为无。

    所以,基本上dict.get() 将查看字典中是否存在键并将其设置为d 值(默认为None)。

    所以,我们可以这样做:

    eaters = {'chicken': 5, 'meat': 5, 'rice': 3}
    
    counts = {}
    for k in eaters.values():
        # If we find the k key in counts we add 1
        # If not set the count to 1
        counts[k] = counts.get(k, 0) + 1
    
    print(counts)
    
    >>> {3: 1, 5: 2}
    

    所以,我们有一个字典,我们可以在其中计算eaters 字典的每个值出现的次数。

    最后,要获得eaters dict 值的最大出现次数,我们可以这样做:

    # get_max: temporar variable in which we stock the max
    # val = will stock the key with the max value in counts dict
    get_max, val = 0, 0
    for k, v in counts.items():
        if v > get_max:
            get_max = v
            val = k
    print(k)
    
    >>> 5
    

    【讨论】:

      猜你喜欢
      • 2015-01-30
      • 1970-01-01
      • 2019-07-13
      • 2023-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多