Hallo, ich habe ein paar Fragen zu Dictionarys, und zwar:
a) Wie kann ich überprüfen, ob bestimmte Werte genau ein mal in einem Dictionary vorkommen?
b) Wie kann ich die Werte innerhalb des dicts vertauschen?
Die Anzahl der einträge ist immer bekannt und konstant (9)
Danke für Antworten,
Lg HH
Ein paar Fragen zu Dictionarys
1. Es gibt immer nur einen Key!
2. Ein normales dict kann man nicht ordnen
naja fast
2. Ein normales dict kann man nicht ordnen
naja fast
Code: Alles auswählen
sorted(my_dict.keys())
the more they change the more they stay the same
Naja, es sieht so aus: Ich habe mir überlegt, man könnte ja mit Python ein Sudoku sicherlich recht schnell per Brute Force lösen. Damit ich jedes Feld einzeln ansprechen kann, würde ich ein Dicitionary hernehmen, aber es stehen ja bei einem Sudoku die Werte bekanntermaßen nicht geordnet da, daher die Frage des vertauschens. Und in einer Reihe darf ja 1-9 auch nur einmal vorkommen...
Das wäre auch eine Möglichkeit, daran hab ich gar nicht gedacht, danke.
Aber wie stelle ich sicher, dass jeder Wert bloß einmal da ist?
Per
Kann ich ja schauen, ob ein Wert vorhanden ist, aber wie oft sagt mir das nicht...
Aber wie stelle ich sicher, dass jeder Wert bloß einmal da ist?
Per
Code: Alles auswählen
if blabla in a:
print(blabla)
Zuletzt geändert von heiliga horsd am Freitag 19. Februar 2010, 19:27, insgesamt 2-mal geändert.
Nein. Aber das erste Feld links oben bekommst du beispielsweise so als Liste. Schauen wieviele doppelt sind, sollte dann aber echt nicht mehr schwierig sein.
Code: Alles auswählen
liste = [zwei_d_feld[x][y] for x in range(3) for y in range(3)]
Man könnte zusätzlich pro Reihe, Spalte, und 3x3-Kästchen je ein `set()` verwalten, wo man die Zahlen "abstreicht", die schon verwendet wurden. Die Schnittmenge für ein 1x1-Kästchen ergibt dann die Zahlen, die man da noch reinschreiben darf. Einfach mal im Forum suchen, so eine Lösung habe ich hier irgendwo mal gepostet.
@Panke: Tut mir Leid, aber den Code bzw. was du meinst versteh ich grad überhaupt nicht... könntest du das etwas ausführen?
Außerdem funktioniert der Code bei mir nicht :/
Trotzdem Danke für deine Bemühungen!
@Blackjack: OK, ich werd mal die Forensuche befragen! Auch dir herzlichen Dank!
Lg HH
Außerdem funktioniert der Code bei mir nicht :/
Trotzdem Danke für deine Bemühungen!
@Blackjack: OK, ich werd mal die Forensuche befragen! Auch dir herzlichen Dank!
Lg HH
heiliga horsd hat geschrieben:Per
Kann ich ja schauen, ob ein Wert vorhanden ist, aber wie oft sagt mir das nicht...Code: Alles auswählen
if blabla in a: print(blabla)
Code: Alles auswählen
>>> mylist = [1,2,3,4,5,1,1,1,2,3]
>>> mylist.count(1)
4
Mein Code verwendet eine List Comprehension. Wenn er bei Dir nicht funktioniert, solltest Du mindestens die Fehlermeldung mit angeben, um nachzuvollziehen, warum das so ist. Ich vermute mal, du hast einfach keine entsprechende Liste an den Namen zwei_d_feld gebunden.
Wieder eine List Comprehension. Lies Dir den Teil der Anleitung durch, auf den ich oben verwiesen habe. Falls Du dazu Fragen hast, stelle sie einem gesonderten Thema.
Code: Alles auswählen
spielfeld = [[None]*9 for x in range(9)]
@Panke: Danke für den Link, ja in der tTat hat bloß die 2d-Liste gefehlt. Danke dir!
@snafu: Danke für den Hinweis!! Jedoch ist mir aufgefallen, dass das nur etwas bei einer eindimensionalen Liste bringt - gibts da auch was für mehrdimensionale?
@snafu: Danke für den Hinweis!! Jedoch ist mir aufgefallen, dass das nur etwas bei einer eindimensionalen Liste bringt - gibts da auch was für mehrdimensionale?
Code: Alles auswählen
>>> mylist = [[1,2,3,4,5,1,1,1,2,3],[2,3,4,5,1,7,8,1,2,1]]
>>> sum(x.count(1) for x in mylist)
7
HWK[/code]