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


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

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

    我的最佳实践是:

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

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

    1. {
    2.     "parameters": [
    3.     { "name":"baidu" , "url":"www.baidu.com" }, 
    4.     { "name":"google" , "url":"www.google.com" }, 
    5.     ]
    6. }

    同样的内容,YAML 格式为:

    1. parameters:
    2. - name: baidu
    3.   url: www.baidu.com
    4. - name: google
    5.   url: www.google.com

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

    基本语法

    • 大小写敏感

    • 使用缩进表示层级关系

    • 缩进不允许使用tab,只允许空格

    • 缩进的空格数不重要,只要相同层级的元素左对齐即可

    • '#'表示注释

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

    数据类型

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

    • 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

    • 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)

    • 标量:单个的、不可再分的值

    对象示例:

    name: baidu

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

    数组示例:

    1. Person:
    2. - one
    3. - two
    4. - three

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

    标量示例:

    1. cpu: 1
    2. mem: 4

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

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

    写在最后

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

  • 相关阅读:
    C++标准模板(STL)- 类型支持 (std::size_t,std::ptrdiff_t,std::nullptr_t)
    查询资源消耗
    会员权益-需求调查:需要什么样的云服务器优惠
    Spring Bean 的作用域(Bean Scope)
    dolphinscheduler3.2.0 install报错
    CS-NP白蛋白包覆壳聚糖纳米颗粒/人血清白蛋白-磷酸钙纳米颗粒无机复合材料
    kvm webvirtcloud 如何添加直通物理机的 USB 启动U盘
    神经网络算法的具体流程,神经网络都有哪些算法
    【算法学习】-【滑动窗口】-【长度最小的子数组】
    决策树 #数据挖掘 #Python
  • 原文地址:https://blog.csdn.net/weshengxin/article/details/126377317