应用于Dict
时,values(...)
和keys(...)
是否会以匹配顺序返回项目?
换句话说,zip(keys(d), values(d))
是否保证精确包含字典d
的键值对?
最佳答案
选项1
当前的Julia源code表示Dict()
对象的键和值存储为Array
对象,它们是有序的。因此,您可以像问题表述那样分别使用values()
和keys()
。但是,依靠未公开的实现细节很危险,因为可能会在未通知的情况下对其进行更改。
选项2OrderedDict
包中的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]
作为idx
的Keys
元素。
关于dictionary - 值和键是否保证顺序一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39002073/