Iteration über python OrderedDict

Habe ich Folgendes OrderedDict:

OrderedDict([('r', 1), ('s', 1), ('a', 1), ('n', 1), ('y', 1)])

Dies tatsächlich stellt eine Häufigkeit eines Buchstabens in einem Wort.

Im ersten Schritt würde ich die letzten beiden Elemente zum erstellen einer union-Tupel wie folgt;

 pair1 = list.popitem()
    pair2 = list.popitem()
    merge_list = (pair1[0],pair2[0])
    new_pair = {}
    new_pair[merge_list] = str(pair1[1] + pair2[1])
    list.update(new_pair);

Diese haben für mich den folgenden OrderedList:

OrderedDict([('r', 1), ('s', 1), ('a', 1), (('y', 'n'), '2')])

Möchte ich nun zur Iteration über die Elemente, wobei er jedes mal die letzten drei und die Entscheidung auf der Grundlage der niedrigeren Summe der Werte, was ist die union-Objekt.

Zum Beispiel die obige Liste wird zu;

OrderedDict([('r', 1), (('s', 'a'), '2'), (('y', 'n'), '2')])

aber das oben war:

OrderedDict([ ('r', 1), ('s', 2), ('a', 1), (('y', 'n'), '2')])

Das Ergebnis wäre:

OrderedDict([('r', 1), ('s', 2), (('a','y', 'n'), '3')])

wie ich will, die auf der linken Seite zu haben, der kleinere Wert

Ich habe versucht, es selbst zu tun, aber nicht verstehen, wie zum Durchlaufen von einem Ende bis zum Anfang über ein OrderedDict.

Wie kann ich es tun?

BEARBEITET
Die Beantwortung der Kommentar:

Bekomme ich ein Wörterbuch der Häufigkeit von Buchstaben in einem Satz:

{ 's':1, 'a':1, 'n':1, 'y': 1}

und müssen, erstellen Sie einen huffman-Baum aus.

zum Beispiel:

((s,a),(n,y))

Ich bin mit python 3.3

Lösen Sie Ihre XY-Problem und dies wird leichter sein, um eine Antwort für! In juristischer Hinsicht -- sagen Sie uns, was Ihren breiten Ziel ist es, nicht, wie zu lösen, Ihre Besondere Weise, es zu tun.
Du meinst reversed(OrderedDict.items())?
du hast Recht - ich bearbeitet meine Frage eigentlich, was ich tun muss

InformationsquelleAutor Dejell | 2014-01-07

Schreibe einen Kommentar