Ich muss Saiten aus allen Dateien in einem Verzeichnis greifen und sie irgendwie aufzeichnen, also habe ich versucht, defaultdict zu verwenden, um dies zu erstellen, aber ich habe Schwierigkeiten herauszufinden, wie schrittweise zu jeder Ebene des Wörterbuchs hinzuzufügen. Im Wesentlichen, was das Wörterbuch aussehen sollte, ist dies:Python: defaultdict (dict) wie man ein verschachteltes Wörterbuch erstellt?
Dateiname
Bundle
Info
Bundle
Info
Dateiname
Bundle
Info
etc habe ich die Info als eine Liste, so kann ich füge einfach alles hinzu, was ich brauche, aber wenn ich das hier ausführe, bekomme ich ein einzelnes Bündel und Informationen für jeden Dateinamen. Es scheint, als ob die update() - Funktion die Werte im Inneren ersetzt und ich bin mir nicht sicher, wie ich das hinzufügen und dann ein neueres Wörterbuch für jedes Bundle erstellen kann. Jede Hilfe wird geschätzt, und wir bitten um Verständnis.
import collections
import os
devices = collections.defaultdict(lambda: collections.defaultdict(dict))
# bundles = collections.defaultdict(dict)
for filename in os.listdir('.'):
if os.path.isfile(filename):
if '.net' in filename:
dev = open(filename)
for line in dev:
line = line.strip()
values = line.split(' ')
if values[0] == 'interface':
bundle_name = values[1]
if '/' in bundle_name:
pass
else:
if len(values) == 2:
ur_device = devices[filename]
ur_device.update(
{
'bundle_name': bundle_name,
'bundle_info': [],
}
)
if 'secondary' in values:
pass
elif values[0] == 'ipv4' and values[1] == 'address' and len(values) == 4:
ur_device['bundle_info'].append(
{
'ip_address': values[2],
'subnet_mask': values[3],
}
)
dev.close()
Danke für die Einsicht! Am Ende habe ich es zur Arbeit gebracht, und Ihre Kommentare haben mir geholfen, es zu vereinfachen. – dreamville