Wie kann ich ein zufälliges Paar von einem bekommen dict
? Ich mache ein Spiel, in dem Sie eine Hauptstadt eines Landes erraten müssen und ich brauche Fragen, um zufällig zu erscheinen.
Das dict
sieht aus wie{'VENEZUELA':'CARACAS'}
Wie kann ich das machen?
python
random
dictionary
key
Tekknolagi
quelle
quelle
d.keys()
sich eine Liste befindet, aber in Python 3.x, wod.keys()
sich ein Iterator befindet, funktioniert es nicht . Sie solltenrandom.choice(list(d.keys()))
stattdessen tun .d = {'VENEZUELA':'CARACAS', 'CANADA':'OTTAWA'}
Hehe, +1 für die sehr subtile Gehirnwäsche ...Ich habe dies geschrieben, um das gleiche Problem zu lösen:
https://github.com/robtandy/randomdict
Es hat O (1) zufälligen Zugriff auf Schlüssel, Werte und Elemente.
quelle
Versuche dies:
Das funktioniert definitiv.
quelle
Wenn Sie das
random
Modul nicht verwenden möchten , können Sie auch popitem () ausprobieren :Da die
dict
Reihenfolge nicht erhalten bleibt, erhaltenpopitem
Sie durch die Verwendung von Elementen in einer beliebigen (aber nicht streng zufälligen) Reihenfolge.Beachten Sie auch, dass
popitem
das Schlüssel-Wert-Paar aus dem Wörterbuch entfernt wird, wie in den Dokumenten angegeben .quelle
next
überwinden , dass ein Wörterbuch nicht funktioniert, da es sich um eine Zuordnung handelt. (Ich kam hierher, um mich inspirieren zu lassen, und das war es).Durch den Aufruf random.choice auf die
keys
des Wörterbuchs (die Länder).quelle
random.choice(list(d.keys()))
.Dies funktioniert in Python 2 und Python 3:
Ein zufälliger Schlüssel:
Ein zufälliger Wert
Ein zufälliger Schlüssel und Wert
quelle
Wenn Sie random.choice () nicht verwenden möchten, können Sie Folgendes versuchen:
quelle
list(…)
hier mehrfach ein. Wie wäre esmyDictionary_list = list(myDictionary)
?Da der ursprüngliche Beitrag das Paar wollte :
(Python 3-Stil)
quelle
Da dies Hausaufgaben sind:
Überprüfen Sie,
random.sample()
welches Element ein zufälliges Element aus einer Liste auswählt und zurückgibt. Sie können eine Liste der Wörterbuchschlüssel mitdict.keys()
und eine Liste der Wörterbuchwerte mit erhaltendict.values()
.quelle
random.sample
undrandom.choice
kann nicht mit Iteratoren arbeiten. Sie müssen die Länge der Sequenz kennen, die von einem Iterator nicht bestimmt werden kann.random.sample
gibtk
zufällige Elemente zurück ,random.choice
gibt ein einzelnes zufälliges Element zurückIch gehe davon aus, dass Sie eine Art Quizantrag stellen. Für diese Art von Anwendung habe ich eine Funktion geschrieben, die wie folgt lautet:
Wenn ich die Eingabe von gebe
questions = {'VENEZUELA':'CARACAS', 'CANADA':'TORONTO'}
und die Funktionshuffle(questions)
aufrufe, dann ist die Ausgabe wie folgt:Sie können dies weiter ausbauen, indem Sie auch die Optionen mischen
quelle
selected_keys
. Und Sie werden das wahrscheinlich ungefähr 100 Mal wiederholen. Löschen Sie zumindest die übernommenen Schlüssel von q likedel(q[current_selection])
- Sie können q mit dem neuen gemischtselected_keys
wieq = selected_keys
nach allem überschreiben . Vergessen Sie auch nicht die Identifizierung! Alternativ können Sie sich meinennp.random.choice(...)
Ansatz ansehenVersuchen Sie dies (mit random.choice von Elementen)
quelle
Mit modernen Versionen von Python (seit 3), Objekten , die von Methoden zurückgegeben
dict.keys()
,dict.values()
unddict.items()
sind Ansicht * Objekte. Und hey kann iteriert werden, so dass eine direkte Verwendungrandom.choice
nicht möglich ist, da es sich jetzt nicht um eine Liste oder einen Satz handelt.Eine Möglichkeit besteht darin, das Listenverständnis zu verwenden, um die Arbeit zu erledigen mit
random.choice
:Verweise:
quelle
quelle
Ich habe diesen Beitrag gefunden, indem ich nach einer vergleichbaren Lösung gesucht habe. Zum Auswählen mehrerer Elemente aus einem Diktat kann Folgendes verwendet werden:
quelle