python随机排序相同值的项目

时间:2012-05-16 20:19:27

标签: python

这有点棘手,我无法想出任何简洁的内容。

我有一个按元组项目排序的元组列表。这些项目可能具有相同的值,如下所示:

a = [(a,1), (b,1), (c, 1), (d,2), (e,2), (f,2)]

我正在寻找的是一种随机化所有1和2的顺序的方法。这是为了取代一点mysql:

ORDER BY num_of_hotdogs DESC, rand()

1 个答案:

答案 0 :(得分:8)

您可以按由自身组成的元组对项目进行排序,然后使用随机数。如果v_1 < v_2(v_1, random.random()) < (v_2, random.random());如果v_1 == v_2,它将回退到比较随机数。

sorted(a, key=lambda v: (v, random.random()))