【发布时间】:2019-09-19 02:09:13
【问题描述】:
我是 Julia 的新手,如果这是一个基本问题,我很抱歉。
假设我们有一个字典和一个键向量:
X = [2, 1, 1, 3]
d = Dict( 1 => "A", 2 => "B", 3 => "C")
我想创建一个包含值而不是键的新数组(根据字典),所以最终结果将类似于
Y = ["B", "A", "A", "C"]
我想我可以遍历向量元素,在字典中查找它并返回相应的值,但这对我来说似乎非常低效。 类似的东西
Y = Array{String}(undef, length(X))
for i in 1:length(X)
Y[i] = d[X[i]]
end
编辑:另外,如果 X 包含 missing 值,我提出的解决方案将不起作用。
所以我的问题是,是否有更有效的方法(我正在使用更大的数组和字典),或者这是一种合适的方法吗?
【问题讨论】:
-
您自己的建议非常高效,并且可能是最快的解决方案。 Julia 中的循环非常快,通常是最佳解决方案。请注意,您可以使用
Chars 代替长度为1 的字符串,例如'A',这样更快。 -
@DNF 谢谢!我不知道
Chars。我想我剩下的唯一问题与我的编辑有关:当X具有missing值时,这可以适应工作吗?如果我实现这个,我会告诉KeyError: key missing not found。 -
我为此编辑了下面的答案。
-
有几个很好的解决方案,有些很简洁,有些很冗长,但这里重要的一点是循环很快,你不一定需要去寻找罐头“内置”在'解决方案。你自己的循环代码会很快。这需要一些时间来学习 Matlabbers、Pythonistas 和 R 用户 ;)
标签: julia