Python Schleifen und dictionaries

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Compunerd
User
Beiträge: 5
Registriert: Samstag 3. November 2018, 20:05

Ich möchte eine Liste aus einem Dictonary machen unter der Bedingung das nur die Keys übernommen werden deren Wert größer gleich 20 ist.
d={'jos':22,''Netty':23,'Hans':19}usw.
n=[]
if d[ 'jos']>19:
n.append('jos')
usw.
das wäre aber sehr viel schreibarbeit weil ich jeden einzelnen key mit if teste. Gibt es hier für eine elegantere Lösung?
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Ja, schau mal hier: https://docs.python.org/3.6/tutorial/da ... ctionaries
In dem letzten Absatz vor dem ersten Beispiel wird da eine dict methode genannt, die dir weiterhilft.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Compunerd
User
Beiträge: 5
Registriert: Samstag 3. November 2018, 20:05

ok danke :)
JRS
User
Beiträge: 1
Registriert: Donnerstag 29. November 2018, 20:14

import random

Liste1 = [31.01, 28.02, 31.03, 30.04, 31.05, 30.06, 31.07, 31.08, 30.09, 31.10, 30.11, 31.12]

Liste2 = [00.01, 00.02, 00.03, 00.04, 00.05, 00.06, 00.07, 00.08, 00.09, 00.10, 00.11, 00.12]

Spieler = 12.01
Kontrolle = "%.2f" % Spieler

Spielstufe_leicht = random.randint(1,31) + random.choice (Liste2)
Kontrolle2 = "%.2f" % Spielstufe_leicht
n=0
for i in Liste1:
while Spielstufe_leicht not in Liste1:
i= ("%.2f" % Liste1 [n])
if i [3:] == Kontrolle2 [3:]:
if Liste1[n] - Spielstufe_leicht >= 0 and Kontrolle2 [3:] == Kontrolle [3:] or Kontrolle2 [0:2] == Kontrolle [0:2] and Spieler - Gegner < 0 :
print(Spielstufe_leicht)
else:
Spielstufe_leicht = random.randint(1,31) + random.choice (Liste2)
n=n+1


Wie schaffe ich es, dass der Wert für Spielstufe_leicht die Schleife immer wieder durchläuft. Bis jetzt gibt er bei einem einmalig falschem Wert nichts mehr aus.
Ich möchte mich schon im Voraus für die Hilfe bedanken.
Antworten