【问题标题】:Finding the mode of a list using ONLY loops and creating lists in python [duplicate]仅使用循环查找列表的模式并在python中创建列表[重复]
【发布时间】:2015-12-26 06:35:39
【问题描述】:

我一直在试图弄清楚如何使用排序功能或导入任何模块来找到列表的模式不使用...这是我目前所拥有的:

d = {}
def mode():
    for i in mode:
        if i in d:
            d[i] += 1
        else:
            d[i] = 1
    return

如何找到如下输出:

print(mode([1, 5, 6, 1, 1, 2]))
[1]
print(mode([5, 6, 7, 8, 9]))
[5, 6, 7, 8, 9]

非常感谢!

【问题讨论】:

标签: python list dictionary append function


【解决方案1】:

如果没有模式,您需要计算 dict 中出现的次数并根据返回列表本身的值提取 max

def mode(l):
     d= {}
    for i in l:
        d.setdefault(i, 0)
        d[i] += 1
    mx = max(d,key=d.get)
    return d[mx] if d[mx] > 1 else l 

【讨论】:

    【解决方案2】:

    使用以值作为键,以计数作为值的字典。如果您使用的是 Python 3,则这是 Counter 数据类型。

    计算完所有条目后,找出最大值。对具有该值的所有元素进行列表理解。

    【讨论】:

    • OP 说没有导入,所以collections.Counter 已经出局了。与此相关的是,Counter 是在 2.7 中添加的,因此您不需要 Python 3 即可访问它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    相关资源
    最近更新 更多