将 defaultdict(list) 写入文件

2024-01-04

之前问过一个问题使用defaultdict解析多分隔符文件 https://stackoverflow.com/questions/46264408/using-defaultdict-to-parse-multi-delimiter-file/46264451?noredirect=1#comment79494732_46264451

虽然我确实根据代码获得了所需的输出,但我正在努力将其作为这种形式的表格写入文件

         count pos _pos _neg
31022550     
31022550    
31022550    
31022550

ids:

for key, rows in ids.iteritems():
     for row in rows:
         print '{}\t{}'.format(key, row)

31022550    {'count': '0', 'base': '=', 'pos': '20', '_neg': '0', '_pos': '0'}
31022550    {'count': '2', 'base': 'A', 'pos': '20', '_neg': '0', '_pos': '2'}
31022550    {'count': '0', 'base': 'C', 'pos': '20', '_neg': '0', '_pos': '0'}
31022550    {'count': '1391', 'base': 'G', 'pos': '20', '_neg': '672', '_pos': '719'}
31022550    {'count': '1', 'base': 'T', 'pos': '20', '_neg': '1', '_pos': '0'}
31022440    {'count': '0', 'base': 'N', 'pos': '20', '_neg': '0', '_pos': '0'}
31022550    {'count': '2', 'base': '+A', 'pos': '20', '_neg': '0', '_pos': '2'}
31022551    {'count': '0', 'base': '=', 'pos': '20', '_neg': '0', '_pos': '0'}
31022551    {'count': '960', 'base': 'A', 'pos': '20', '_neg': '464', '_pos': '496'}
31022551    {'count': '0', 'base': 'C', 'pos': '20', '_neg': '0', '_pos': '0'}
31022551    {'count': '13', 'base': 'G', 'pos': '20', '_neg': '9', '_pos': '4'}
31022551    {'count': '0', 'base': 'T', 'pos': '20', '_neg': '0', '_pos': '0'}
31022551    {'count': '0', 'base': 'N', 'pos': '20', '_neg': '0', '_pos': '0'}
31022551    {'count': '288', 'base': '+G', 'pos': '20', '_neg': '117', '_pos': '171'}
31022551    {'count': '9', 'base': '+GG', 'pos': '20', '_neg': '4', '_pos': '5'}
31022551    {'count': '1', 'base': '+GGG', 'pos': '20', '_neg': '0', '_pos': '1'}

Code

with open('mycsvfile.csv', 'w') as f:
    writer = csv.writer(f)
    for k, v in ids.iteritems():
        writer.writerow([k] + v)

我会这样做(python 2):

with open('mycsvfile.csv', 'wb') as f:  # binary is better, avoids blank lines in some python 2 versions
    writer = csv.writer(f,delimiter="\t")
    keys=["count","pos","_pos","_neg"]
    writer.writerow([""]+keys)
    for k, vl in ids.iteritems():
        for v in vl:
            writer.writerow([k] + [v[key] for key in keys])

您需要一个双循环来迭代每个键的列表。我已将列名称存储在列表中,因此我可以重用它来构建列表理解中的行以及标题(第一项没有标题,我只是将其留空)

现在看起来像这样:

        count   pos     _pos    _neg
31022550        0       20      0       0
31022550        2       20      2       0
31022550        0       20      0       0

(稍微移动,因为制表符不够宽,但这不是读回的问题)

Python 3 用户必须更改:

with open('mycsvfile.csv', 'wb') as f:

by

with open('mycsvfile.csv', 'w',newline="") as f:

and

for k, vl in ids.iteritems():

by

for k, vl in ids.items():  # also works in python 2

请注意,writerow双循环可以替换为单行,双循环,平面生成器理解传递给writerows,执行速度更快:

writer.writerows([k] + [v[key] for key in keys] for k, vl in ids.items() for v in vl)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 defaultdict(list) 写入文件 的相关文章

随机推荐

  • Google App Engine 和 jQuery Ajax 导致管道损坏错误

    我有一个非常标准的案例 我尝试通过 jQuery 的 Ajax 提交一些 JSON 数据 我的 JavaScript 代码如下所示
  • Fragment onResume() 和 backStack 问题

    当我从另一个片段回来时 我陷入了恢复片段的困境 设想 我有一个Fragment A 现在我正在打开多个片段Fragment A say A1 A2 A3 使用框架布局 现在我正在启动一个新的片段说Fragment B从 A1 A2 A3 之
  • jQuery 显示 setTimeout 计时器

    我正在尝试构建一个简单的倒计时应用程序 是否可以在 setTimeout 上显示计时器值 或者我必须使用 for 循环 Thanks with setTimeout var n 100 setTimeout countDown 1000 f
  • SimpleCursorAdapter 和 CursorAdapter

    我想知道 CursorAdapter 和 SimpleCursorAdapter 之间有什么区别 人们会根据什么标准选择其中之一 您与他们合作的经历 谢谢 我认为主要问题还没有得到解答 SimpleCursorAdapter 的存在是为了那
  • Java 中的尾部调用优化

    从 Java 8 开始 Java 不提供尾部调用优化 TCO 经过研究 我了解到这是 在 JDK 类中 有许多安全敏感方法 它们依赖于计算 JDK 库代码和调用代码之间的堆栈帧来确定谁在调用它们 然而 基于 JVM 的 Scala 支持尾部
  • 文件丢失 在文件系统中,捕获表单提交

    我有一个通过 jQuery 提交的表单ajaxSubmit 功能 此表单包含一个文件控件 并且已提出一个可能的故障点 如果在提交表单之前所选文件被重命名 删除或以其他方式变得不可访问 则该表单可能会或可能不会根据浏览器提交 虽然提交失败是预
  • 使用 PyDict_SetItemString 进行引用计数

    我想知道当将新值设置到 PyDict 在 C 扩展内 内的现有字段中时 内存管理 引用计数如何工作 例如 假设按以下方式创建和填充字典 myPyDict PyDict New tempPyObj PyString FromString Or
  • 读取科学计数法 scanf

    我正在开发一个程序 它应该只有一个 scanf 函数 并且应该能够接受科学计数法和实数的输入 任何帮助将不胜感激 根据scanf文档 http en cppreference com w c io fscanf f匹配浮点数 数字的格式与预
  • 通过初始化列表实例化抽象类[重复]

    这个问题在这里已经有答案了 我想了解为什么编译器允许编译以下代码 include
  • Numpy 和 matplotlib 垃圾收集

    我有一个 python 脚本 它对不同的参数进行许多模拟 Q K 绘制结果并将其存储到磁盘 每组参数 Q K 生成 200x200x80 数据点的 3D 体积网格 这需要约 100 MB 的数据 然后逐层绘制该体积网格的一部分 生成约 60
  • 将参数绑定到信号/槽

    我基本上有多个事件信号 我想将它们连接到同一个插槽 我想知道的是如何将基于字符串的参数传递到同一插槽 以便该插槽知道该信号来自哪个信号 一种替代方法是制作与信号一样多的槽 然后以 1 1 的方式连接它们 但考虑到所有处理的代码非常相似 这种
  • 在 R 中生成滞后时间序列横截面变量

    我是 R 新用户 我有一个时间序列横截面数据集 尽管我已经找到了滞后时间序列数据的方法R 我还没有找到创建滞后时间序列横截面变量的方法 以便我可以在分析中使用它们 以下是您可以如何使用lag 功能与zoo 和面板系列数据 gt librar
  • 远程主机标识已更改?

    NPM 表示可能存在安全错误 meteor npm install mui system npm ERR Error while executing npm ERR usr local bin git ls remote h t ssh e
  • 开始创建自定义视图过渡

    我正在寻找有关创建自定义视图转换的教程 特别是 涉及除受影响的 UIView 之外的元素的转换 例如在转换发生时播放动画或修改正在转换的 UIView 的屏幕截图 我并不是指实现一组基本的过渡 幻灯片 淡入淡出等 苹果网站上有很多相关示例
  • 如何以相同的方式对两个数组进行排序?

    我希望输出为 3 0 2 36 1 1 键和以相同方式排序的值 three one two fun main var l 0 var letters arrayOf one two three var digits arrayOf 2 36
  • hadoop 空指针异常

    我正在尝试设置一个hadoop的多节点集群迈克尔 诺尔的方式 http www michael noll com tutorials running hadoop on ubuntu linux multi node cluster 使用两
  • Dockerfile 中 RUN 和 CMD 的区别

    我很困惑什么时候应该使用CMD vs RUN 例如 执行 bash shell 命令 即ls la 我总是会使用CMD或者有什么情况我会使用RUN 试图了解这两个类似的最佳实践Dockerfile指令 RUN https docs dock
  • 在 IIS 6 中的应用程序级别设置 NTAuthenticationProviders

    我在 IIS 中有以下结构 Internet Information Services local computer Web Sites Default Web Site MyApplication MyApplication是 IIS 中
  • 无法在脚本模块中创建 PowerShell 别名

    重现步骤 使用以下函数和别名在 WindowsPowerShell Modules TestAlias TestAlias psm1 中创建 TestAlias 模块 function foo write output foo New Al
  • 将 defaultdict(list) 写入文件

    之前问过一个问题使用defaultdict解析多分隔符文件 https stackoverflow com questions 46264408 using defaultdict to parse multi delimiter file