2012-05-16 48 views
7

这有点棘手,我不能拿出任何简洁的东西。python随机地对相同值的项目进行排序

我有一个按元组项目排序的元组列表。这有可能对这些项目具有相同的值,所以是这样的:

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

我在寻找什么,是自己套内随机所有的1周2的顺序的方式。这是要取代一点的mysql:

ORDER BY num_of_hotdogs DESC, rand() 

回答

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())) 
+1

....认真吗?当谈到python时,我仍然是绿色的,但像这样的东西只是真正让我的一天。 – Matt

+1

注意:sorted(a,key = lambda v:(v [1],random.random()))你需要指定v上的索引,但是是的。 – Matt

+1

对不起,您需要将该键功能与先前使用的任何键功能“叠加”。 – Dougal

相关问题