如何在数组中分配重复值?

时间:2014-10-13 20:35:18

标签: python arrays algorithm sorting distribution

我希望在数组中分发所有重复的值。 (我不知道用什么名称来描述)。

我将以一个例子向您解释。

我有一个重复值的数组:

IN:

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

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

OUT:

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

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

IN:

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

OUT:

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

在更糟糕的情况下,我可以拥有几个具有多个重复值X时间的uniq值。

如果某人有算法​​名称或实现(Python将是完美的:p)

谢谢,

GAEL

1 个答案:

答案 0 :(得分:0)

试试这个:

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