dictionary - 值和键是否保证顺序一致?

标签 dictionary julia

应用于Dict时,values(...)keys(...)是否会以匹配顺序返回项目?

换句话说,zip(keys(d), values(d))是否保证精确包含字典d的键值对?

最佳答案

选项1

当前的Julia源code表示Dict()对象的键和值存储为Array对象,它们是有序的。因此,您可以像问题表述那样分别使用values()keys()。但是,依靠未公开的实现细节很危险,因为可能会在未通知的情况下对其进行更改。

选项2

OrderedDict包中的DataStructures(以及功能values()keys())可能是确定一致顺序的最简单,最安全的方法。如果您不需要特别订购,也可以。

选项3

如果您不想处理安装和加载DataStructures包所带来的麻烦,则可以使用Julia的内置语法来处理此类事情,例如

Mydict = Dict("a" => 1, "b" => 2, "c" => 1)

a = [(key, val) for (key, val) in Mydict]


在问题表达中使用zip()只会增加这种情况下的复杂性和风险。

如果要将实体分开,则可以使用:

Keys = [key for (key, val) in Mydict]
Values = [val for (key, val) in Mydict]


或在需要时仅引用a[idx][1]作为idxKeys元素。

关于dictionary - 值和键是否保证顺序一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39002073/

相关文章:

c++ - 类崩溃编译器中的 MSVC 2010 模板化映射

Python - 检查字典中是否存在列表项

java - 不同 JVM 之间共享的映射

metaprogramming - 在运行时将变量保存到文件

python - 不跳过的质量错误检查

arrays - 数组/列表 vs 字典(为什么我们把它们放在第一位)

types - 在 Julia 中键入 kwargs

julia - 我无法直接使用 `subset` 在 Julia 的 DataFrames 中使用 `in` 过滤许多值

julia - UndefVar错误: histogram not defined in Julia

dictionary - 在 Julia 中将 Dict 转换为 DataFrame