0

誰でも私を助けることができます..私はデータリストを持っています

namelist=['res/anim/satu.jpg','res/anim/dua.jpg','res/draw/logo.jpg','res/draw/img/bg.png','res/draw/img/fg.png']

このようにdictに変換する方法

{'res': {'anim':['satu.jpg', 'dua.jpg']},'draw': ['logo.jpg', {'img':['bg.jpg', 'fg.jpg']}]}
4

1 に答える 1

0

構造を構築するだけです。

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']}}

しかし、あなたは本当にあなたの構造の戦略を再考したいと思っています. それ以外の場合は、(例外ハンドラーで) マッピングのリストを検索する必要があります。

于 2013-06-09T16:46:13.133 に答える