Seite 1 von 1

Dict. automatisch erstellen

Verfasst: Donnerstag 20. September 2007, 17:04
von Damaskus
Hallo Community,
wie kann ich ein Dictionary "automatisch" erzeugen?

Ich brauche eins ähnlich wie unten, nur mit insgesamt ca. 270 solchen einträgen.
Gibts eine möglichkeit so etwas in einer Schleife zu erzeugen ähnlich wie
bei Listen und den Eintrag dann z.B. mit append() einzufügen?

Code: Alles auswählen

        self.dictionary = {"kmd_1": [None, str, "KMD", "EMPF_0"],
                           "kmd_2": [None, str, "KMD", "EMPF_1"],
                           "kmd_3": [None, str, "KMD", "EMPF_2"],
                           "kmd_4": [None, str, "KMD", "EMPF_1"],
                           "kmd_5": [None, str, "KMD", "EMPF_2"],
                           "kmd_6": [None, str, "KMD", "EMPF_1"],
                           "kmd_7": [None, str, "KMD", "EMPF_2"],
                           "kmd_8": [None, str, "KMD", "EMPF_1"],
                           "kmd_9": [None, str, "KMD", "EMPF_2"],
                           "kmd_10": [None, str, "KMD", "EMPF_1"],
                           "99999999_1": [None, str, "99999999", "EMPF_0"],
                           "99999999_2": [None, str, "99999999", "EMPF_1"],
                           "99999999_3": [None, str, "99999999", "EMPF_2"],
                           "99999999_4": [None, str, "99999999", "EMPF_3"],
                           "99999999_5": [None, str, "99999999", "EMPF_0"],
                           "99999999_6": [None, str, "99999999", "EMPF_1"],
                           "99999999_7": [None, str, "99999999", "EMPF_2"],
                           "99999999_8": [None, str, "99999999", "EMPF_3"],
                           "99999999_9": [None, str, "99999999", "EMPF_0"],
                           "99999999_10": [None, str, "99999999", "EMPF_1"],
                           "88888888_1": [None, str, "88888888", "EMPF_0"],
                           "88888888_2": [None, str, "88888888", "EMPF_0"],
                           "88888888_3": [None, str, "88888888", "EMPF_0"],
                           "88888888_4": [None, str, "88888888", "EMPF_0"],
                           "88888888_5": [None, str, "88888888", "EMPF_0"],
                           "88888888_6": [None, str, "88888888", "EMPF_0"],
                           "88888888_7": [None, str, "88888888", "EMPF_0"],
                           "88888888_8": [None, str, "88888888", "EMPF_0"],
                           "88888888_9": [None, str, "88888888", "EMPF_0"],
                           "88888888_10": [None, str, "88888888", "EMPF_0"],
                           }
Gruß
Damaskus

Verfasst: Donnerstag 20. September 2007, 17:28
von schlangenbeschwörer
Ja klar, nur das du das halt mit dem key machst.
Bsp, ungetestet:

Code: Alles auswählen

dictionary = {}
for keypart1 in ("kmd", "99999", "88888", "xyz"):
    for keyno in xrange(1, 11):
         # wahlweise auch mit "%s"...
         dictionary[keypart1 + "_" + keyno] = [None, str, keypart1, "?"]

        
Welcher Regel die "EMPF"s folgen, seh ich grad nicht.

Verfasst: Donnerstag 20. September 2007, 17:30
von Michael Schneider
Hi Damaskus,

ich glaube Du meinst sowas wie das hier:

Code: Alles auswählen

Keys = range(3)
Values = ["Hallo", "Welt", "!"]

print dict(zip(Keys, Values))
{0: 'Hallo', 1: 'Welt', 2: '1'}
Gruß,
Michel

Verfasst: Donnerstag 20. September 2007, 18:02
von Damaskus
schlangenbeschwörer hat geschrieben: Welcher Regel die "EMPF"s folgen, seh ich grad nicht.

Die folgen gar keiner Regel sondern sind vorgegeben.

Das ganze wird aus einer INI eingelesen.
Es gibt darin Sektionen die aus 8 Ziffern bestehen (z.B. 99999999)
Und in jeder Sektion gibts 30 Variablen mit EMPF_1 bis EMPF_30, die eingelesen werden und dann als 99999999_1, ..._2, ..._3, ... (als Key) und "text" als Value in dem Dict. stehen sollen.

Bisher hab ich das ganz einfach gelöst mit obigen Muster, da das Dict. am Anfang immer mit None als Value starten MUSS.

Jetzt überleg ich halt wie ich den Code um ca. 270 Zeilen kürzen kann.

Mfg
Damaskus

Verfasst: Donnerstag 20. September 2007, 18:34
von Michael Schneider
Damaskus hat geschrieben:
schlangenbeschwörer hat geschrieben: Welcher Regel die "EMPF"s folgen, seh ich grad nicht.

Die folgen gar keiner Regel sondern sind vorgegeben.

Das ganze wird aus einer INI eingelesen.
Es gibt darin Sektionen die aus 8 Ziffern bestehen (z.B. 99999999)
Und in jeder Sektion gibts 30 Variablen mit EMPF_1 bis EMPF_30, die eingelesen werden und dann als 99999999_1, ..._2, ..._3, ... (als Key) und "text" als Value in dem Dict. stehen sollen.
...
Jetzt überleg ich halt wie ich den Code um ca. 270 Zeilen kürzen kann.
Hi Damaskus,

ich sehe Dein Problem noch nicht. Wenn Dir Schlüssel und Werte vorher bekannt sind, nimmst Du meinen Lösungsansatz. Wenn Du das Dictionary dynamisch befüllen willst, nimmst Du den vom Schlangenbeschwörer.

Grüße,
Michael

Verfasst: Donnerstag 20. September 2007, 20:49
von schlangenbeschwörer
Du kannst natürlich auch in einer Schleife einfach jede Zeile einlesen filtern/formatieren und dann im dict speichern.

Code: Alles auswählen

#file_ = ...
for line in file_ : #oder file_.readline() oder was auch immer du hast
    key = line[xy]
    args = [xy+"?" for xy in file_]
    d[key] = args

Verfasst: Donnerstag 20. September 2007, 22:08
von Damaskus
Michael Schneider hat geschrieben:
Damaskus hat geschrieben:
schlangenbeschwörer hat geschrieben: Welcher Regel die "EMPF"s folgen, seh ich grad nicht.

Die folgen gar keiner Regel sondern sind vorgegeben.

Das ganze wird aus einer INI eingelesen.
Es gibt darin Sektionen die aus 8 Ziffern bestehen (z.B. 99999999)
Und in jeder Sektion gibts 30 Variablen mit EMPF_1 bis EMPF_30, die eingelesen werden und dann als 99999999_1, ..._2, ..._3, ... (als Key) und "text" als Value in dem Dict. stehen sollen.
...
Jetzt überleg ich halt wie ich den Code um ca. 270 Zeilen kürzen kann.
Hi Damaskus,

ich sehe Dein Problem noch nicht. Wenn Dir Schlüssel und Werte vorher bekannt sind, nimmst Du meinen Lösungsansatz. Wenn Du das Dictionary dynamisch befüllen willst, nimmst Du den vom Schlangenbeschwörer.

Grüße,
Michael
Problem ist mit den oberen Lösungsansätzen schon erledigt.
Ich wollt nur noch erklären wie sich die EMPFs zusammensetzten.

Gruß
Damaksus