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

Python 如何在数组中分配重复值?,python,arrays,algorithm,sorting,distribution,Python,Arrays,Algorithm,Sorting,Distribution,我希望将所有重复的值分布在一个数组中。(我不知道该用什么名字来形容这件事) 我将用一个例子来解释你 我有一个具有重复值的数组: 在: 我想要一个所有值都分布的数组。一个值重复2次之间的最大字段/空格数 输出: ['foo', 'bar', 'bli', 'foo', 'bar', 'bli'] 如果您喜欢使用包含数字的数组,也可能对我有好处: 在: 输出: 在更糟糕的情况下,我可以有几个uniq值和几个重复的X时间值 如果有人有一个算法名称或实现来实现这一点(Python将是完美的:p) 谢谢

我希望将所有重复的值分布在一个数组中。(我不知道该用什么名字来形容这件事)

我将用一个例子来解释你

我有一个具有重复值的数组:

在:

我想要一个所有值都分布的数组。一个值重复2次之间的最大字段/空格数

输出:

['foo', 'bar', 'bli', 'foo', 'bar', 'bli']
如果您喜欢使用包含数字的数组,也可能对我有好处:

在:

输出:

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

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

谢谢

Gaël

试试这个:

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

有趣的方法,但这并不能解决我的问题。在(更复杂的示例)中:
['foo','foo','foo','bar','bli','bli','bla']
预期/接受的输出:
['foo','bar','bli','bla','foo','bar','bli','foo']
查看我的编辑。
[1, 1, 2, 3, 2, 3]
[1, 2, 3, 1, 2, 3]
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