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
2 dimensionale Liste sortieren
Code: Alles auswählen
d=dict(a=1, c=2, b=3)
sorted(d.items())
-
- User
- Beiträge: 22
- Registriert: Freitag 21. Juli 2006, 12:12
Hi,
danke fuer die Antwort.
Klappt wunderbar mit der Sortierung. Kann ich die Sortierung nun auch andersrum machen? Also nicht aufsteigend sondern absteigend sortieren?
danke fuer die Antwort.
Klappt wunderbar mit der Sortierung. Kann ich die Sortierung nun auch andersrum machen? Also nicht aufsteigend sondern absteigend sortieren?
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)]
>>>
-
- User
- Beiträge: 22
- Registriert: Freitag 21. Juli 2006, 12:12
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
leider habe ich immer noch die falsche reihenfolge.
statt 2, 1 wird immernoch 1, 2 angezeigt.
Gruss Martin
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)
statt 2, 1 wird immernoch 1, 2 angezeigt.
Gruss Martin
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)
-
- User
- Beiträge: 22
- Registriert: Freitag 21. Juli 2006, 12:12
Hi,
danke fuer die Anwtort.
Habe es gerade mit dem Rueckgabewert versucht. Das Ergebnis sieht aber auch nicht wirklich sortiert aus.
Gruss Martin
danke fuer die Anwtort.
Habe es gerade mit dem Rueckgabewert versucht. Das Ergebnis sieht aber auch nicht wirklich sortiert aus.
Gruss Martin
-
- User
- Beiträge: 22
- Registriert: Freitag 21. Juli 2006, 12:12
Hi,
danke fuer eure Hilfe, hat natuerlich doch geklappt. Ich war nur etwas zu bloed um das Ergebnis richtig zu lesen .
Gruss Martin
danke fuer eure Hilfe, hat natuerlich doch geklappt. Ich war nur etwas zu bloed um das Ergebnis richtig zu lesen .
Gruss Martin