構造を構築するだけです。
result = {}
for name in namelist:
parts = name.split('/')
target = result
for part in parts[:-2]:
try:
target = target.setdefault(part, {})
except AttributeError: # hit list leaf, add dictionary
try:
target = next(t for t in target if isinstance(t, dict))
except StopIteration:
target.append({})
target = target[-1]
try:
target.setdefault(parts[-2], []).append(parts[-1])
except AttributeError: # hit list leaf, add dictionary
try:
target = next(t for t in target if isinstance(t, dict))
target.setdefault(parts[-2], []).append(parts[-1])
except StopIteration:
target.append({parts[-2]: [parts[-1]]})
これは与える:
{'res': {'draw': ['logo.jpg', {'img': ['bg.png', 'fg.png']}], 'anim': ['satu.jpg', 'dua.jpg']}}
しかし、あなたは本当にあなたの構造の戦略を再考したいと思っています. それ以外の場合は、(例外ハンドラーで) マッピングのリストを検索する必要があります。