【问题标题】:How to find the average of the list elements within a dictionary?如何找到字典中列表元素的平均值?
【发布时间】:2022-01-15 04:49:22
【问题描述】:
sweets = {'cadbury': [180,90], 'candy': [190],
          'milk chocolate': [150, 160], 'dark chocolate': [100],
          'white chocolate': [180], 'ice cream': [122]}

dict sweets 有不同的键和列表值对。我想请你帮忙找出值列表中数字的平均值,并返回平均值最高的键作为输出

【问题讨论】:

    标签: python list dictionary data-structures


    【解决方案1】:

    使用 numpy 你可以试试:

    d = {x:np.mean(sweets[x]) for x in sweets}
    

    返回:

    {'cadbury': 135.0,
     'candy': 190.0,
     'dark chocolate': 100.0,
     'ice cream': 122.0,
     'milk chocolate': 155.0,
     'white chocolate': 180.0}
    

    获取钥匙:

    max(d, key=d.get)
    

    返回:

    'candy'
    

    【讨论】:

    • 你可以使用 sweets.items() 来避免每次都调用 sweet[x]。
    【解决方案2】:

    您可以使用statistics.mean 来计算平均值,并使用max 和自定义键来获取具有最大平均值的键:

    sweets = {'cadbury': [180,90], 'candy': [190], 'milk chocolate': [150, 160], 'dark chocolate': [100], 'white chocolate': [180],
     'ice cream': [122]}
    
    from statistics import mean
    max(sweets, key=lambda x: mean(sweets[x]))
    

    输出: 'candy'

    【讨论】:

    • 我不知道您可以在带有键的字典上使用 max - 不错的解决方案!
    • @SteveMayne 您可以在任何可迭代对象上使用max。 Dict 是可迭代的,迭代 dict d 或多或少等同于迭代 d.keys()
    【解决方案3】:

    编写一个 for 循环来迭代 dict 中的每个键值。然后编写内部循环来计算每个键的平均值。首先必须将最大平均值设置为最小浮点值,然后如果值大于最小值,则将其设置为最大平均值,直到循环结束。

    【讨论】:

      【解决方案4】:

      你也可以这样做:

      out = max(sweets.items(), key=lambda x: (sum(x[1])/len(x[1]) if x[1] else 0))[0]
      

      【讨论】:

        猜你喜欢
        • 2021-12-03
        • 2014-04-14
        • 1970-01-01
        • 1970-01-01
        • 2020-07-12
        • 2021-09-30
        • 1970-01-01
        • 1970-01-01
        • 2021-06-18
        相关资源
        最近更新 更多