[^ 1]: Ein Memo, wenn ich es vergesse
Ein Datenelement (z. B. Sachbearbeiter) hat eine Baumstruktur (Abteilungsmitarbeiter) und verschiedene Attribute (z. B. Abteilungsleiter, Abteilungsleiter, Sachbearbeiter). Erklärt, wie Attribute in Gruppen festgelegt und verwendet werden (z. B. Abteilungen und Abschnitte).
Definieren und verwenden Sie zwei Arten von Informationen: eine baumstrukturierte ** Konfiguration ** und ein Attribut (** Name **).
import re, toml
toml._groupname_re = re.compile('^[A-Za-z0-9-Hmm--Einer-龥_*-]+$')
tml = toml.loads("""\
[Verfassung.Teil A.]
Abschnitt L.="X Angestellter,Y Angestellter"
Abschnitt M.="Z Angestellter"
[Verfassung.Teil B.]
Abschnitt N.="W Angestellter"
[Name.Teil A.]
Direktor="Herr A."
[Name.Teil A..Abschnitt L.]
Manager="Herr L."
[Name.Teil A..Abschnitt L..X Angestellter]
Chef="Herr X"
[Name.Teil A..Abschnitt L..Y Angestellter]
Chef="Herr Y."
[Name.Teil A..Abschnitt M.]
Manager="Herr M."
[Name.Teil A..Abschnitt M..Z Angestellter]
Chef="Herr Z."
[Name.Teil B.]
Direktor="Herr B."
[Name.Teil B..Abschnitt N.]
Manager="Herr N."
[Name.Teil B..Abschnitt N..W Angestellter]
Chef="Herr W."
""")
tml['Verfassung']
>>>
{'Teil A.': {'Abschnitt L.': 'X Angestellter,Y Angestellter',
'Abschnitt M.': 'Z Angestellter'},
'Teil B.': {'Abschnitt N.': 'W Angestellter'}}
tml['Name']
>>>
{'Teil A.': {'Abschnitt L.': {'X Angestellter': {'Chef': 'Herr X'},
'Y Angestellter': {'Chef': 'Herr Y.'},
'Manager': 'Herr L.'},
'Abschnitt M.': {'Z Angestellter': {'Chef': 'Herr Z.'},
'Manager': 'Herr M.'},
'Direktor': 'Herr A.'},
'Teil B.': {'Abschnitt N.': {'W Angestellter': {'Chef': 'Herr W.'},
'Manager': 'Herr N.'},
'Direktor': 'Herr B.'}}
Erstellen Sie Konfigurationsdaten mit ortoolpy.MultiKeyDict. Wenn Sie eine Schleife mit for ausführen, können Sie auf alle Daten zugreifen (alle zugehörigen). Beachten Sie, dass MultiKeyDict zwischengespeichert ist und nicht aktualisiert werden kann. (Vorausgesetzt, es wird zuerst wie die Einstellungsinformationen gelesen und ändert sich nicht)
from ortoolpy import MultiKeyDict
iskey = lambda x: x[-1] in 'Abteilungsleiter' # 'Abteilungsleiter'Ändern Sie den Schlüssel, der mit endet, in einen neuen MultiKeyDict
conv = lambda x: ((s,None) for s in x.split(','))
Verfassung= MultiKeyDict(tml['Verfassung'], iskey=iskey, conv=conv, extend=True)
für ky in der Konfiguration:
print(ky)
>>>
('Teil A.', 'Abschnitt L.', 'X Angestellter')
('Teil A.', 'Abschnitt L.', 'Y Angestellter')
('Teil A.', 'Abschnitt M.', 'Z Angestellter')
('Teil B.', 'Abschnitt N.', 'W Angestellter')
Erstellen Sie Attributdaten (Name) mit MultiKeyDict und greifen Sie mit den Konfigurationsdaten als Schlüssel zu.
Name= MultiKeyDict(tml['Name'], iskey=iskey)
für ky in der Konfiguration:
print(' '.join(ky))
for ky2,Name im Namen[ky].items():
print(f' %s: %s'%(ky2[-1],name))
>>>
Abteilung A, Abschnitt L, Abschnitt X.
Direktor:Herr A.
Manager:Herr L.
Chef:Herr X
Abteilung A Abschnitt L Abschnitt Y Abschnitt
Direktor:Herr A.
Manager:Herr L.
Chef:Herr Y.
Abteilung A M Abschnitt Z Abschnitt
Direktor:Herr A.
Manager:Herr M.
Chef:Herr Z.
Abteilung B Abschnitt N Abschnitt W Abschnitt
Direktor:Herr B.
Manager:Herr N.
Chef:Herr W.
für ky in der Konfiguration:
print(' '.join(ky))
dc =Name.get_list(ky, True)
print(f'Direktor: %s'%dc['Direktor'][0])
print(f'Manager: %s'%dc['Manager'][0])
print(f'Chef: %s'%dc['Chef'][0])
>>>
Abteilung A, Abschnitt L, Abschnitt X.
Direktor:Herr A.
Manager:Herr L.
Chef:Herr X
Abteilung A Abschnitt L Abschnitt Y Abschnitt
Direktor:Herr A.
Manager:Herr L.
Chef:Herr Y.
Abteilung A M Abschnitt Z Abschnitt
Direktor:Herr A.
Manager:Herr M.
Chef:Herr Z.
Abteilung B Abschnitt N Abschnitt W Abschnitt
Direktor:Herr B.
Manager:Herr N.
Chef:Herr W.
Wie unten gezeigt, ist der in [Name.A Abteilung] definierte Manager auch "Name.A Abteilung.L Abschnitt.X Abschnitt" oder [Name.A Abteilung.L Abschnitt.Y Abschnitt] "Manager =" Herr A "". Ich konnte mich darauf beziehen.
[Name.Teil A] Direktor = "Herr A"
Auf diese Weise können Sie das Attribut aus den Enddaten (Teilnehmer) abrufen, ohne sich Gedanken darüber machen zu müssen, wo das Attribut in der Baumstruktur definiert wurde.
das ist alles
Recommended Posts