【问题标题】:How distribute repeated value in an array? [duplicate]如何在数组中分配重复值? [复制]
【发布时间】:2014-10-13 20:35:18
【问题描述】:

我希望将所有重复值分布在一个数组中。 (我不知道用什么名字来形容它合适)。

我会用一个例子来解释你。

我有一个重复值的数组:

输入:

['foo', 'foo', 'bar', 'bar', 'bli', 'bli']

我想要一个包含所有值的数组。在一个值的 2 次重复之间最多有字段/空格。

输出:

['foo', 'bar', 'bli', 'foo', 'bar', 'bli']

如果您更喜欢包含数字的数组也可能对我有好处:

输入:

[1, 1, 2, 3, 2, 3]

输出:

[1, 2, 3, 1, 2, 3]

在更糟糕的情况下,我可以有多个 uniq 值和多个重复值 X 次。

如果有人有一个算法名称或实现来做到这一点(Python 将是完美的:p)

谢谢,

盖尔

【问题讨论】:

    标签: python arrays algorithm sorting distribution


    【解决方案1】:

    试试这个:

    from collections import Counter
    lst = ['foo', 'foo', 'bar', 'bar', 'bli', 'bli']
    x = Counter(lst)
    max = max(Counter(lst).values())
    result_lst = []
    for i in range(max):
        for key in x.keys():
            if x[key]:
                result_lst.append(key)
                x[key] -= 1
    
    print result_lst
    

    【讨论】:

    • 有趣的方法,但这并不能解决我的问题。 IN(更复杂的示例):['foo', 'foo', 'foo', 'bar', 'bar', 'bli', 'bli', 'bla'] 预期/接受输出:['foo', 'bar', 'bli', 'bla', 'foo', 'bar', 'bli', 'foo']
    • 看看我的编辑。
    猜你喜欢
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 2021-10-17
    • 2012-06-05
    相关资源
    最近更新 更多