我基本上想这样做:
f = open(genes_path, 'w')
for key, genes in key_genes.iteritems():
f.write(key)
for gene in genes:
f.write(",\t"+gene)
f.write("\n")
f.close()
得到这个:
key1, AT3G32920, AT3G33187, AT3G32940, AT3G32930, AT3G32980, AT3G32960
key2, AT3G32920, AT3G33187, AT3G32940, AT3G32930,
键可以是任何字符串(没有逗号),顺序在任何地方都无关紧要(我使用 boltons 中的 OrderedMultiDict 和列表以方便打印,但它真的无关紧要,可以是 dict 和为所有我关心的设置),每行可以有不同数量的元素。
我似乎找不到任何模块来完成这个非常简单的任务。 DictWriter 需要列/字段名称,所以 this没有回答我的问题。 Numpy 仅适用于矩形数组,填充引入了太多不必要的东西。我知道自己编写循环很容易,但我只是觉得这很常见,它应该有自己的内置函数。
有时我只需要向人们发送大量的东西(比如基因给不会编程的人),这样他们就可以将其放入 excel 添加或删除元素然后发回,而我不必这样做其他任何东西。
有人知道有一个模块可以自动读写这些参差不齐的列表字典文件吗?或者是否有充分的理由不存在?
我在想像 pandas.read_csv(path, delimiter=",")
和 pandas.DataFrame.to_csv(path, delimiter=",") 这样极其简单的东西
。
基本原理
我之所以挑剔它是一个模块的单一功能,而不是我可以非常在纯 python 中轻松完成的事情,不是因为我懒惰,而是因为当你使用具有良好文档的模块中的某些内容,人们可以更轻松地查看代码并弄清楚其意图。即使任务有点微不足道,您仍然可以降低代码的复杂性。我认为将您自己的函数编写为特定领域的东西,而常见的读写例程应该是您import
的东西,并且最好在可用时使用。 python 禅宗的一部分,对吗?所以第二个问题实际上是在问“这是一个特定领域的任务吗?”,因为对我来说似乎不是这样。
最佳答案
您可以将每一行构建成一个字符串并进行一次写入:
with open(genes_path, 'w') as f:
for key, genes in key_genes.iteritems():
f.write("\n".join(",\t".join([key] + genes)))
这还是自己做的,不过比你发的代码简洁多了。
关于python - 读/写一个文件,其中每一行都是一个字典的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32082179/