我是新来的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循环:
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':这是一个列表的列表,还是最外面的字典中唯一的关键字? – Eugene
都在最外面的字典中的键唯一 –