2 dimensionale Liste sortieren

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.
flyingeagle
User
Beiträge: 22
Registriert: Freitag 21. Juli 2006, 12:12

2 dimensionale Liste sortieren

Beitragvon flyingeagle » Montag 25. Juni 2007, 15:08

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
EyDu
User
Beiträge: 4866
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Beitragvon EyDu » Montag 25. Juni 2007, 15:26

Code: Alles auswählen

d=dict(a=1, c=2, b=3)
sorted(d.items())
flyingeagle
User
Beiträge: 22
Registriert: Freitag 21. Juli 2006, 12:12

Beitragvon flyingeagle » Mittwoch 27. Juni 2007, 14:02

Hi,

danke fuer die Antwort.

Klappt wunderbar mit der Sortierung. Kann ich die Sortierung nun auch andersrum machen? Also nicht aufsteigend sondern absteigend sortieren?
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Beitragvon Zap » Mittwoch 27. Juni 2007, 14:21

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)]
>>>
flyingeagle
User
Beiträge: 22
Registriert: Freitag 21. Juli 2006, 12:12

Beitragvon flyingeagle » Mittwoch 27. Juni 2007, 14:34

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
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Beitragvon Zap » Mittwoch 27. Juni 2007, 15:38

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)
flyingeagle
User
Beiträge: 22
Registriert: Freitag 21. Juli 2006, 12:12

Beitragvon flyingeagle » Mittwoch 27. Juni 2007, 15:48

Hi,

danke fuer die Anwtort.
Habe es gerade mit dem Rueckgabewert versucht. Das Ergebnis sieht aber auch nicht wirklich sortiert aus.

Gruss Martin
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Beitragvon Zap » Mittwoch 27. Juni 2007, 16:05

Zeig doch mal ein print von deinem Dictionary.
flyingeagle
User
Beiträge: 22
Registriert: Freitag 21. Juli 2006, 12:12

Beitragvon flyingeagle » Freitag 29. Juni 2007, 09:31

Hi,

danke fuer eure Hilfe, hat natuerlich doch geklappt. Ich war nur etwas zu bloed um das Ergebnis richtig zu lesen ;).

Gruss Martin

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]