2012-05-16 45 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

相關問題