这有点棘手,我无法想出任何简洁的内容。
我有一个按元组项目排序的元组列表。这些项目可能具有相同的值,如下所示:
a = [(a,1), (b,1), (c, 1), (d,2), (e,2), (f,2)]
我正在寻找的是一种随机化所有1和2的顺序的方法。这是为了取代一点mysql:
ORDER BY num_of_hotdogs DESC, rand()
答案 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()))