Я новичок в Python и в настоящее время с помощью Python 2. Я построил многомерный словарь, который выглядит следующим образом:печати многомерный словарь с повторяющимся ключом
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
Я знаю, есть много сообщений о печати многомерных словарей, однако я не нашел один (пока), где первейшую ключ печатаются во время каждой итерации. Я попытался включить фрагменты кода, предоставленные для других вопросов, касающихся многомерных словарей, но пока это не сработало.
Я только успел написать словарь в обычный .txt-файл в формате словаря с этим цикл:
for target in targets_dict:
results.write(str(target) + str(targets_dict[str(target)]) + '\n')
или записать его в CSV-файл с помощью csvwriter (я знаю, что есть также 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. переменная 'target': это список dicts или все ключи в самых дальних словарях уникальны? – Eugene
все ключи во внешнем словаре уникальны –