Seite 1 von 1
2 dimensionale Liste sortieren
Verfasst: Montag 25. Juni 2007, 15:08
von flyingeagle
Hallo,
ich benoetige eine zweidimensionale Liste bzw. ein Key-Wertepaar dass ich sortieren kann.
Hier ein paar Bsp.-Daten
Key => Value
2 => zweitens
3 => drittens
4 => viertens
...
So ich moechte nun dass ich eine Liste mit den Schluesseln und den Werten habe. Die Schluessel sind wirkliche Schluessel und existieren nur einmal.
Habe nun versucht das ganze per Dictionary zu loesen aber dass kann man ja nicht sortieren (soweit ich gelesen habe).
Kann mir vielleicht jemand helfen?
Gruss Martin
Verfasst: Montag 25. Juni 2007, 15:26
von EyDu
Verfasst: Mittwoch 27. Juni 2007, 14:02
von flyingeagle
Hi,
danke fuer die Antwort.
Klappt wunderbar mit der Sortierung. Kann ich die Sortierung nun auch andersrum machen? Also nicht aufsteigend sondern absteigend sortieren?
Verfasst: Mittwoch 27. Juni 2007, 14:21
von Zap
Jep, reverse halt
Code: Alles auswählen
>>> help(sorted)
Help on built-in function sorted in module __builtin__:
sorted(...)
sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list
>>>
>>>sorted(d.items(),reverse=True)
[('c', 2), ('b', 3), ('a', 1)]
>>>
Verfasst: Mittwoch 27. Juni 2007, 14:34
von flyingeagle
Ah
danke vielmals. Hatte das mit dem reverse grade auch gefunden, wusste aber nicht wie ich den zweiten Parameter ueberspringen kann.
EDIT:
So nun habe ich es ausprobiert
Code: Alles auswählen
for k, v in oDict.iteritems():
oResultReg = re.search("^(\d+)", v["Nr"])
if (oResultReg):
nNr = int(oResultReg.group(1))
if(not oResult.has_key(nNr)):
oResult[nNr] = v["Nr"]
sorted(oResult.items(),reverse=True)
leider habe ich immer noch die falsche reihenfolge.
statt 2, 1 wird immernoch 1, 2 angezeigt.
Gruss Martin
Verfasst: Mittwoch 27. Juni 2007, 15:38
von Zap
Mein Senf:
Code: Alles auswählen
for k, v in oDict.iteritems():
oResultReg = re.search("^(\d+)", v["Nr"])
if (oResultReg):
nNr = int(oResultReg.group(1))
# schreibt man besser so
if nNr not in oResult:
oResult[nNr] = v["Nr"]
#Rueckgabe nicht vergessen ;)
sortedResults = sorted(oResult.items(),reverse=True)
Verfasst: Mittwoch 27. Juni 2007, 15:48
von flyingeagle
Hi,
danke fuer die Anwtort.
Habe es gerade mit dem Rueckgabewert versucht. Das Ergebnis sieht aber auch nicht wirklich sortiert aus.
Gruss Martin
Verfasst: Mittwoch 27. Juni 2007, 16:05
von Zap
Zeig doch mal ein print von deinem Dictionary.
Verfasst: Freitag 29. Juni 2007, 09:31
von flyingeagle
Hi,
danke fuer eure Hilfe, hat natuerlich doch geklappt. Ich war nur etwas zu bloed um das Ergebnis richtig zu lesen

.
Gruss Martin