문제 설명 :경로 이름의 파이썬 중첩 사전
비 재귀 솔루션을 사용하여 중첩 된 사전에 OS 경로를 저장합니다.
목표 :
사용할 수있는 가장 빠른 방법을 사용하여 파이썬 사전으로 디렉토리 트리를 나타냅니다.주의 할 (들) :
재귀가 코드에 가장 쉬운이었다 그러나 사용할 수있는 금식 방법은 아닙니다.
선형 솔루션 :
def store_into_bucket(bucket):
'''
Result should look like this: {'1': {'2': {'3': '/1/2/3'}}}
Algorithm looks like this, for linear solution:
bucket[toks[0]] = {}
bucket[toks[0]][toks[1]] = {}
bucket[toks[0]][toks[1]][toks[2]] = '/'+('/'.join(toks))
'''
path = '/1/2/3'
toks = [t for t in path.split('/') if (len(t) > 0)]
lines = []
ops = ['[toks[%s]]' % (i) for i in xrange(0,len(toks))]
n = (len(toks)-1)
for i in xrange(0,len(toks)):
s = 'bucket%s' % (''.join(ops[0:i]))
lines.append('%s = %s' % (s,'{}' if (i < n) else '"%s"'%('/'+('/'.join(toks)))))
__namespace__ = {}
__namespace__['toks'] = toks
exec('\n'.join(lines)) in __namespace__
return __namespace__['bucket']
print store_into_bucket({})
질문 :
이 목표를 달성하기위한 이것보다 더 나은 솔루션이 있습니다.
감사합니다.
오늘 찾아 보니 오늘이 사실을 발견했습니다. http://stackoverflow.com/questions/16547643/convert-a-list-of-delimited-strings-to-a-tree-nested-dict-using-python –