在 Julia 中保存和检索字典的正确方法是啥?

Posted

技术标签:

【中文标题】在 Julia 中保存和检索字典的正确方法是啥?【英文标题】:What is the correct way to save and retrieve dictionaries in Julia?在 Julia 中保存和检索字典的正确方法是什么? 【发布时间】:2015-06-23 21:04:58 【问题描述】:

我已经看到 Julia 充分解释了“MAT”文件,其中包含可以毫无问题地读取为字典的结构。现在我已经创建了自己的字典,其结构如下

(String, String)=> [ Int, Int, Int]

在每个条目上。我可以用writedlm 保存它,它会产生一个非常有序的 表格文本文件,由制表符分隔 (\t),但是如果不进行大量解析,我将无法检索它。如果我使用readdlm,我会得到一个Any 类型的数组,每行的结构都非常不舒服

"(\"Bla bla\", \"tururu\")"     "[a, b, c]"

即两列Strings,其中包含'"''['等符号。

【问题讨论】:

如果您展示用于生成这些结果的实际代码,将会很有帮助。 您绝对可以保存回 MAT 文件,尽管建议使用 HDF5 包和 JLD 子模块。 JLD 被编写用于存储任意 Julia 数据类型(甚至是用户定义的)。 另见How to save an NxNxN array (or Matrix) into a file in Julia (or Python)? 【参考方案1】:

您可以使用 HDF5 包中包含的 JLD(Julia 数据)子模块:

Pkg.add("HDF5")
using HDF5, JLD
d = Dict(
    ("a", "b") => [1, 2, 3],
    ("c", "d") => [4, 5, 6],
    ("e", "f") => [7, 8, 9]
)
save("data.jld", "data", d)
load("data.jld")["data"]

JLD 模块的优点是它保留了每个变量的准确类型信息。

【讨论】:

【参考方案2】:

SalchiPapa 建议的使用 JLD 的解决方案由于某种原因不再有效。这是他们使用 JLD2 的示例的更新版本(只是更改了导入和文件扩展名):

using JLD2, FileIO
d = Dict(
        ("a", "b") => [1, 2, 3],
        ("c", "d") => [4, 5, 6],
        ("e", "f") => [7, 8, 9]
    )
save("data.jld2", "data", d)
load("data.jld2")["data"]

【讨论】:

以上是关于在 Julia 中保存和检索字典的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以像在 Matlab 中一样在 Julia 中嵌套 tic() 和 toc() ?如果不是,那么解决方法是啥?

在 Julia 中定义一个非常稀疏的网络矩阵的最有效方法是啥?

通过 Swift 在 iPhone (iOS) 开发中存储/检索用户数据(读/写文件)的正确方法是啥?

CoreBluetooth:检索多个断开连接的外围设备的正确方法是啥?

与字典查找相比,Julia Valc() 似乎很慢

将 Python argparse.Namespace() 视为字典的正确方法是啥?