targets = {house: {N: {red: {A:1}, garden: {N: 6}}}
{great: {A: {very: {Adv:12}, so: {Adv: 5}, a: {Det: 3}}}}
etc.
기본적으로 항상 4 중첩 된 사전 만의 항목이있다 '세 번째'사전 ({red : {}, horse : {} 등)은 임의의 수의 항목으로 구성 될 수 있습니다. 따라서 사전에있는 항목의 수는 다양합니다.
이제는 사전을 파일로 작성하고 싶습니다. CSV 파일로 작성하는 것이 좋습니다. 출력 파일은 탭으로 구분 된 방식으로 모든 항목을 표시해야하며, 각 행은 가장 먼 키부터 시작해야합니다. 예를 들어 :
내가 아는house N red A 1
house N garden N 6
great A very Adv 12
great A so Adv 5
great A a Det 3
은 다차원 사전 인쇄에 대한 글을 많이하지만 내가 발견하지 않은, 거기에 최 키마다 반복하는 동안 인쇄 한 (아직). 다차원 사전에 관한 다른 질문에 제공된 코드 스 니펫을 포함 시키려고했지만 지금까지 제대로 작동하지 않았습니다. 또한이 (내가 아는
for target in targets_dict:
results.write(str(target) + str(targets_dict[str(target)]) + '\n')
또는 csvwriter을 사용하여 CSV 파일에 기록 :
난 그냥 루프이와 사전 형식의 정상이 .txt 파일로 사전을 작성하는 관리 DictWriter, 나는 그냥)가 제대로 동작하지 않습니다 수 :w = csv.writer(results, delimiter = '\t')
for target in targets_dict.iteritems():
w.writerow(target)
은 분명히, 이것은 매우 기초적인 수준이고 반복 내부 사전을 입력하지 않습니다.
관련 문제에 게시 된 수정 된 솔루션을 시도하는 중 (recursively traverse multidimensional dictionary, dimension unknown)은 항상 '예상되는 문자 버퍼 개체'오류에 있습니다.
for for k,v in sorted(targets_dict.items(),key=lambda x: x[0]):
if isinstance(v, dict):
results.write(" ") + ("%s %s") % (k, v)
모든 제안이나 힌트는이 모든 것의 배후에있는 논리를 이해하도록 도와 주므로 감사하겠습니다.
Re. 변수'targets' : 이것은 dicts의 목록입니까, 아니면 가장 바깥에있는 사전의 모든 키입니까? – Eugene
가장 가까운 사전의 모든 키는 고유 한 –