10

これは少しトリッキーで、簡潔なものを思いつくことができませんでした。

タプルの項目でソートされたタプルのリストがあります。これらのアイテムが同じ値を持つ可能性があるため、次のようになります。

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

私が探しているのは、独自のセット内のすべての 1 と 2 の順序をランダム化する方法です。これは、mysql を少し置き換えるためのものです。

ORDER BY num_of_hotdogs DESC, rand()
4

1 に答える 1

12

アイテム自体と乱数で構成されるタプルでアイテムを並べ替えることができます。もしv_1 < v_2(v_1, random.random()) < (v_2, random.random()); の場合v_1 == v_2、乱数の比較にフォールバックします。

sorted(a, key=lambda v: (v, random.random()))
于 2012-05-16T20:21:44.730 に答える