前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生物信息学中保存键值对的最佳实践

生物信息学中保存键值对的最佳实践

作者头像
简说基因
发布2022-11-11 16:22:36
6770
发布2022-11-11 16:22:36
举报
文章被收录于专栏:简说基因简说基因简说基因

本文简要介绍一下生物信息学中保存键值对的最佳实践。

键值对是常见的一种数据结构:Python 中的字典,Perl 中是 Hash 等。如何将键值对保存到文件中,除了序列化方法,如 Python 的 pickle 模块,常见的还有保存为 INI、json 或 YAML 文件。

我的最佳实践是:

数据结构比较简单的情况下,用 json 或 YAML,如果比较复杂,使用更优雅和强大的 YAMl 格式。

先看一个 json 文件,长下面这样:

{
    "parameters": [
    { "name":"baidu" , "url":"www.baidu.com" }, 
    { "name":"google" , "url":"www.google.com" }, 
    ]
}

同样的内容,YAML 格式为:

parameters:
- name: baidu
  url: www.baidu.com
- name: google
  url: www.google.com

可以看到,json 更严谨,但略显繁琐,没有 YAML 简洁优雅。这里简要介绍一下 YAML 文件格式。

基本语法

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格
  • 缩进的空格数不重要,只要相同层级的元素左对齐即可
  • '#'表示注释

键和值不需要分别使用引号,以及允许'#'表示注释,是 YAML 与 json 的两个非常不一样的点,这使得 YAML 更为优雅和强大。

数据类型

YAML 支持 3 种基本的数据类型:

  • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
  • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
  • 标量:单个的、不可再分的值

对象示例:

name: baidu

键之后是一个“:”号,然后一个英文空格,接着是值。

数组示例:

Person:
- one
- two
- three

这跟 Markdown 语法的列表一样:每行一条记录,每条记录以一个减号“-”开头,接着是一个空格,然后是记录内容。

标量示例:

cpu: 1
mem: 4

基本的,不可再分割的值就是标量,如 cpu 后面的 1,可以表示 1 条线程,mem 后面的 4,可以表示 4G 内存。

当然,由基本的数据类型可以组成复杂的数据类型,本文不展开说。

写在最后

用 INI 保存键值对感觉存在于远古时代,改用 json 或 YAML 吧。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 简说基因 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 基本语法
  • 数据类型
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档