디렉토리의 모든 파일에서 문자열을 가져 와서 어떻게 든 기록해야하므로 defaultdict를 사용하여 만들려고했지만 점진적으로 사전의 각 레이어에 추가하는 방법을 찾는 데 어려움이 있습니다.파이썬 : defaultdict (dict) 어떻게 중첩 된 사전을 만들 수 있습니까?
파일 이름
번들
정보
번들
정보 : 기본적으로, 어떤 사전이 같이해야 할 것은 이것이다
파일 이름
번들
정보
등 나는 목록 그래서 내가 할 수와 같은 정보를 가지고 필자가 필요로하는 것만을 목록에 추가 할 수 있지만 여기에있는 것을 실행할 때 각 파일 이름에 대해 단일 번들 및 정보를 얻게됩니다. update() 함수가 내부의 값을 대체하는 것처럼 보입니다. 그리고 계속 추가하고 각 번들에 대해 최신 사전을 만드는 방법을 모르겠습니다. 어떤 도움도 감사하고 혼란스러워서 죄송합니다.
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()
통찰력을 가져 주셔서 감사합니다! 나는 그것이 작동하도록 끝내었고, 당신의 의견은 그것을 단순화하는 데 도움이되었습니다. – dreamville