python - 读/写一个文件,其中每一行都是一个字典的列表

标签 python dictionary io

我基本上想这样做:

  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/

相关文章:

Python - 使用 csv.DictReader 忽略 len() 中的空单元格

Java - 无法从分块文件合并文件

c - 读取文件行,将每一行放入一个数组中,然后打印

linux - 使用 getchar() 在原始模式下捕获 Ctrl-Enter?

python - 遍历列中的多个值

python - 编辑 DataFrame 中的值

python - subprocess.call() 如何与 shell=False 一起工作?

python - 如何使用 python 发送加密和 dkim 签名的邮件?

python - python中字典中的变量

c++ - unordered_map 在实践中真的比 map 快吗?