Hallo,
ich versuche verzweifelt einen zufälligen wert aus einem dictionary zu bekommen. Google bat zwar einige Lösungsvorschläge, die funktionieren
aber alle nicht. Ist es überhaupt möglich ?
Gruß Milch..
random.choice auf dictionary
- pillmuncher
- User
- Beiträge: 1531
- Registriert: Samstag 21. März 2009, 22:59
- Wohnort: Pfaffenwinkel
Python 2.x:
Python 3.x:
Such dir eines aus.
Code: Alles auswählen
a = random.choice(some_dict.items())
b = random.choice(some_dict.keys())
c = random.choice(some_dict.values())
Code: Alles auswählen
a = random.choice(list(some_dict.items()))
b = random.choice(list(some_dict.keys()))
c = random.choice(list(some_dict.values()))
In specifications, Murphy's Law supersedes Ohm's.
@milchtrinker: Direkt ist das nicht möglich, Du kannst Dir aber vom Dictionary eine Liste mit den Schlüssel oder mit dem "Items" geben lassen und daraus einen zufälligen Wert auswählen.
-
- User
- Beiträge: 6
- Registriert: Sonntag 18. Juli 2010, 17:30
ah super vielen dank an beide, so läuft das ja sofort 
gruß

gruß
-
- User
- Beiträge: 6
- Registriert: Sonntag 18. Juli 2010, 17:30
Ich muss da noch einmal nachfragen, hier mal mein programm (wenn man das so bezeichnen darf)
.
# Hauptstädte raten
import random
# Listen der Kontinente erstellen
europa = {"Albanien":"Tirana","Andorra":"Andorra la Vella","Belgien":"Brüssel","Bosnien und Herzegownina":"Sarajewo","Bulgarien":"Sofia","Dänemark":"Kopenhagen","Deuschland":"Berlin","Estland":"Tallinn","Finnland":"Helsinki","Frankreich":"Paris","Griechenland":"Athen","Irland":"Dublin","Island":"Reykjavik","Italien":"Rom","Kosovo":"Pristina","Kroatien":"Zagreb","Lettland":"Riga","Lichtenstein":"Vaduz","Litauen":"Vilnus","Luxemburg":"Luxemburg","Malta":"Valletta","Mazedonien":"Skopje","Moldawien":"Chisinau","Monaco":"Monaco","Montenegro":"Podgorica","Niederlande":"Amsterdam","Norwegen":"Oslo","Österreich":"Wien","Polen":"Warschau","Portugal":"Lissabon","Rumänien":"Bukarest","Russland":"Moskau","San Marino":"San Marino","Schweden":"Stockholm","Schweiz":"Bern","Serbien":"Belgrad","Slowakei":"Bratislava","Slowenien":"Ljublijana","Spanien":"Madrid","Tschechien":"Prag","Ukraine":"Kiew","Ungarn":"Budapest","England":"London","Weißrussland":"Minsk"}
euro = random.choice(list(europa.keys()))
hs = europa.items()
for land, stadt in hs:
eingabe = input("Bitte die Stadt von" + euro + "eingeben :")
if eingabe == stadt:
print("richtig")
else:
print("falsch")
Das funktioniert aber so nicht, die Schleife kontrolliert nicht den wirklichen Wert, sondern fängt bei 0 an, ich hab nun zwar meinen Random Wert aber check grad nicht
wie ich ihn vergleiche....

# Hauptstädte raten
import random
# Listen der Kontinente erstellen
europa = {"Albanien":"Tirana","Andorra":"Andorra la Vella","Belgien":"Brüssel","Bosnien und Herzegownina":"Sarajewo","Bulgarien":"Sofia","Dänemark":"Kopenhagen","Deuschland":"Berlin","Estland":"Tallinn","Finnland":"Helsinki","Frankreich":"Paris","Griechenland":"Athen","Irland":"Dublin","Island":"Reykjavik","Italien":"Rom","Kosovo":"Pristina","Kroatien":"Zagreb","Lettland":"Riga","Lichtenstein":"Vaduz","Litauen":"Vilnus","Luxemburg":"Luxemburg","Malta":"Valletta","Mazedonien":"Skopje","Moldawien":"Chisinau","Monaco":"Monaco","Montenegro":"Podgorica","Niederlande":"Amsterdam","Norwegen":"Oslo","Österreich":"Wien","Polen":"Warschau","Portugal":"Lissabon","Rumänien":"Bukarest","Russland":"Moskau","San Marino":"San Marino","Schweden":"Stockholm","Schweiz":"Bern","Serbien":"Belgrad","Slowakei":"Bratislava","Slowenien":"Ljublijana","Spanien":"Madrid","Tschechien":"Prag","Ukraine":"Kiew","Ungarn":"Budapest","England":"London","Weißrussland":"Minsk"}
euro = random.choice(list(europa.keys()))
hs = europa.items()
for land, stadt in hs:
eingabe = input("Bitte die Stadt von" + euro + "eingeben :")
if eingabe == stadt:
print("richtig")
else:
print("falsch")
Das funktioniert aber so nicht, die Schleife kontrolliert nicht den wirklichen Wert, sondern fängt bei 0 an, ich hab nun zwar meinen Random Wert aber check grad nicht
wie ich ihn vergleiche....
Bitte verwende Python-Tags für Python-Quellcode und vermeide das Einstellen von überlangen Zeilen. Python kommt sehr gut mit folgender Syntax klar:milchtrinker hat geschrieben:Das funktioniert aber so nicht, die Schleife kontrolliert nicht den wirklichen Wert, sondern fängt bei 0 an, ich hab nun zwar meinen Random Wert aber check grad nicht
wie ich ihn vergleiche....
Code: Alles auswählen
europa = {"Albanien": "Tirana",
"Andorra": "Andorra la Vella",
"Belgien": "Brüssel",
"Bosnien und Herzegownina": "Sarajewo",
...
}
Die von dir gewählten Variablennamen machen das ganze nicht leichter. Wenn sie das ausdrücken sollen, was ich glaube was sie tun sollen, dann hast du das Programm definitiv falsch aufgebaut.
Hier mal ein kurzer Alternativvorschlag
Code: Alles auswählen
country = random.choice(list(europa.keys()))
eingabe = input("Bitte die Hauptstadt von " + country + " eingeben :")
if eingabe == europa[country]:
print("richtig")
else:
print("falsch")
Wobei hier die Verwendung eines Dictionaries vielleicht nicht die beste Wahl ist. Eine Liste mit Tupeln (Land, Hauptstadt) ist IMHO passender. Man will ja zufällig so ein *Paar* auswählen, und nicht nur den Schlüssel.
- noisefloor
- User
- Beiträge: 4209
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
was soll das Programm denn am Ende machen? Alle Länder in zufälliger Reihenfolge abfragen abfragen für ein Land die Hauptstadt fragen?
BTW: London ist nicht die Hauptstadt von England...
Gruß, noisefloor
was soll das Programm denn am Ende machen? Alle Länder in zufälliger Reihenfolge abfragen abfragen für ein Land die Hauptstadt fragen?
BTW: London ist nicht die Hauptstadt von England...

Gruß, noisefloor
-
- User
- Beiträge: 6
- Registriert: Sonntag 18. Juli 2010, 17:30
@me
sorry .. werde ich berücksichtigen. So wie du das da gepostet hast, läuft es genau so wie ich es gedacht habe.
@noisefloor
genau das soll es und ups peinlich
@blackjack
ich hatte zuerst 2 listen mit denen ich es gelöst hatte und nun das dict.. , als nächstes kommt tupel, ich mache das ja im grunde um es zu verstehen und versuche es auf jede art zu lösen :X
sorry .. werde ich berücksichtigen. So wie du das da gepostet hast, läuft es genau so wie ich es gedacht habe.
@noisefloor
genau das soll es und ups peinlich

@blackjack
ich hatte zuerst 2 listen mit denen ich es gelöst hatte und nun das dict.. , als nächstes kommt tupel, ich mache das ja im grunde um es zu verstehen und versuche es auf jede art zu lösen :X
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Naja, er wird wohl an das übergeordnete gedacht haben... aber die natürlichen Zahlen sind ja auch in den ganzen Zahlen enthaltenBlackJack hat geschrieben:@noisefloor: Wieso ist London nicht die Hauptstadt von England!?

encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
Ich dachte schon an mögliche Erweiterungen mit dem Land als Primärschlüssel:BlackJack hat geschrieben:Wobei hier die Verwendung eines Dictionaries vielleicht nicht die beste Wahl ist. Eine Liste mit Tupeln (Land, Hauptstadt) ist IMHO passender. Man will ja zufällig so ein *Paar* auswählen, und nicht nur den Schlüssel.
Code: Alles auswählen
laender = {"Deutschland": {"hauptstadt": "Berlin",
"einwohner": 82000000
},
"Frankreich": {"hauptstadt": "Paris",
"einwohner": 66000000
}
}
- noisefloor
- User
- Beiträge: 4209
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
@BlackJack: London ist die Hauptstadt des "Vereinigten Königreichs" - das ist zumindest politisch die Korrekte Bezeichnung.
England ist nur eine Teilmenge davon.
Gruß, noisefloor
@BlackJack: London ist die Hauptstadt des "Vereinigten Königreichs" - das ist zumindest politisch die Korrekte Bezeichnung.

England ist nur eine Teilmenge davon.
Gruß, noisefloor
Aber London ist *auch* die Hauptstadt von England, ebenso wie Edinburgh die Hauptstadt von Schottland ist. Die Frage ist also eher, ob England ein eigenständiger Staat ist - aber die Behauptung, dass London die Hauptstadt von England sei, ist 100% i.O. 

- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Und von dieser Teilmenge ist London eben auch die Hauptstadt (http://de.wikipedia.org/wiki/England). Berlin ist zwar Bundeshauptstadt, aber eben auch Landeshauptstadt des gleichnahmigen Bundeslandes.noisefloor hat geschrieben:Hallo,
@BlackJack: London ist die Hauptstadt des "Vereinigten Königreichs" - das ist zumindest politisch die Korrekte Bezeichnung.
England ist nur eine Teilmenge davon.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
England hat - im Gegensatz zu anderen Landesteilen des UK - kein Landesparlament oder eine Landesregierung. Und das Vereinigte Königreich hat auch keine (schriftlich fixierte) Verfassung. Ergo: Wenn man spitzfindig ist, kann man sagen, daß London zwar die Hauptstadt des UK ist, England aber gar keine Hauptstadt hat bzw. braucht.
Die Verwaltungseinheiten in England sind derart .... nun ja, historisch ist wohl das richtige Wort, daß man auf manche Besonderheit treffen kann.
Die Verwaltungseinheiten in England sind derart .... nun ja, historisch ist wohl das richtige Wort, daß man auf manche Besonderheit treffen kann.
- noisefloor
- User
- Beiträge: 4209
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
Jetzt haben alle was über Geographie gelernt... nur Python ist auf der Strecke geblieben.
Gruß, noisefloor
Das geht bei Stadtstaaten ja auch schlecht anders.aber eben auch Landeshauptstadt des gleichnahmigen Bundeslandes.

Jetzt haben alle was über Geographie gelernt... nur Python ist auf der Strecke geblieben.

Gruß, noisefloor