11 Stimmen

Python sortiert zufällig Elemente mit dem gleichen Wert

Dies ist etwas knifflig und ich konnte nichts Kurzes finden.

Ich habe eine Liste von Tupeln, die nach einem Element des Tupels sortiert sind. Diese Elemente können denselben Wert haben, also etwas wie das hier:

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

Was ich suche, ist eine Möglichkeit, die Reihenfolge aller 1er und 2er innerhalb ihrer eigenen Gruppen zu randomisieren. Das soll ein Stück MySQL ersetzen:

ORDER BY num_of_hotdogs DESC, rand()

18voto

Danica Punkte 27913

Sie könnten Elemente nach einem Tupel sortieren, das aus sich selbst und dann einer Zufallszahl besteht. Wenn v_1 < v_2, (v_1, random.random()) < (v_2, random.random()); wenn v_1 == v_2, wird auf den Vergleich mit der Zufallszahl zurückgegriffen.

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

3 Stimmen

.... ernsthaft? Ich bin immer noch neu in Python, aber solche Sachen machen mir einfach den Tag.

1 Stimmen

Hinweis: sorted(a, key=lambda v: (v[1], random.random())) Sie müssen den Index auf v angeben, aber ja.

1 Stimmen

Richtig, tut mir leid, du musst diese Schlüsselfunktion mit jeder anderen Schlüsselfunktion stapeln, die du zuvor verwendet hast.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X