【发布时间】:2017-03-19 13:48:37
【问题描述】:
我是 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
我知道,有很多关于打印多维字典的帖子,但是我还没有找到一个(还)在每次迭代期间打印最外面的键的帖子。我尝试包含为有关多维词典的其他问题提供的代码 sn-ps,但到目前为止效果不佳。
我只是设法用这个 for 循环将字典写入字典格式的普通 .txt 文件:
for target in targets_dict:
results.write(str(target) + str(targets_dict[str(target)]) + '\n')
或使用 csvwriter 将其写入 csv 文件(我知道还有 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)
感谢每一个建议或提示,以帮助我理解这一切背后的逻辑,以便我能够弄清楚。
【问题讨论】:
-
回复。变量
targets:这是一个字典列表,还是最外层字典中的所有键都是唯一的? -
最外层字典中的所有键都是唯一的
标签: python dictionary multidimensional-array