Ich arbeite an einem einfachen Parser, wo Reihenfolge/Index von Bedeutung ist. Jeder Eintrag hat jedoch viele Null-Werte. Um Platz zu sparen, möchte ich sie daher entfernen. Um die Reihenfolge/Index-Informationen zu erhalten, versuche ich ein Wörterbuch in einem Wörterbuch zu erstellen, in dem der Schlüssel des inneren Wörterbuchs der "Schlüssel des äußeren Wörterbuchs + der Index" ist.Erstellen eines Wörterbuchs aus einem Wörterbuch als iterable
Es begann als eine lange Kette:
'Blue|periwinkle|power|morning|cyan\nPurple|indigo|violet|royal|electric\nred|rogue|mauve|wine|magenta\nyellow|gold|amber|flax|mustard'
Also öffnete ich die Datei in Python und brach auseinander, um die Zeichenfolge wie folgt:
with open('example1.hl7', 'r') as message:
for i,line in enumerate(message):
line = line.split('|', 1)
linekey = line[0]
line = {linekey + str(i + 1): line[1]}
line = {key: list(map(str, value.split('|'))) for key, value in line.items()}
Was mich dies gab:
{'Blue': ['periwinkle', 'power', 'morning', 'cyan'],
'Purple': ['indigo', 'violet', 'royal', 'electric'],
'red': ['rogue', 'mauve', 'wine', 'magenta'],
'yellow': ['gold', 'amber', 'flax', 'mustard']}
Ich denke, ich muss map() für den nächsten Teil verwenden, aber kann nicht herausfinden, welche Funktion zu korrektem Formular aufrufen im Wörterbuch und wie man den äußeren Schlüssel referenziert. Ich habe den äußeren Schlüssel benannt, um den Aufruf zu erleichtern, aber ich bleibe immer noch dabei, den Index hinzuzufügen und ihn zum Schlüssel für das innere Wörterbuch zu machen. Was ich versuche zu enden ist:
{'Blue':
{'Blue1': 'periwinkle', 'Blue2': 'power', 'Blue3': 'morning', 'Blue4': 'cyan'},
'Purple':
{'Purple1': 'indigo', 'Purple2': 'violet', 'Purple3': 'royal', 'Purple4': 'electric'},
'Red':
{'Red1': 'rogue', 'Red2': 'mauve', 'Red3': 'wine', 'Red4': 'magenta'},
'Yellow':
{'Yellow1': 'gold', 'Yellow2': 'amber', 'Yellow3': 'flax', 'Yellow4': 'mustard'}
}