Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 如何在Julia中的for循环中插入排序函数?_String_Sorting_For Loop_Julia - Fatal编程技术网

String 如何在Julia中的for循环中插入排序函数?

String 如何在Julia中的for循环中插入排序函数?,string,sorting,for-loop,julia,String,Sorting,For Loop,Julia,我在Julia中播放了一些字符串,我制作了一个简单的for循环,在字典中存储一些单词的频率 假设我有这根绳子 x="hola perro hola te huele tu patita perro perro cola colita hola hola hola sí como no" 然后我将y定义为splitx和一个空字典 y=split(x, r"\W", keep=false) c=Dict{String,Int64}() 最后,循环和排序函数位于循环之外,以获得前3个单词: for

我在Julia中播放了一些字符串,我制作了一个简单的for循环,在字典中存储一些单词的频率

假设我有这根绳子

x="hola perro hola te huele tu patita perro perro cola colita hola hola hola sí como no"
然后我将y定义为splitx和一个空字典

y=split(x, r"\W", keep=false)
c=Dict{String,Int64}()
最后,循环和排序函数位于循环之外,以获得前3个单词:

for i in y
    c[i]=get(c,i,0)+1
end

c= sort(collect(c),by=tuple -> last(tuple),rev=true)[1:3]
在循环中插入最后一个命令时,我出现以下错误:

for i in y
    c[i]=get(c,i,0)+1
    c= sort(collect(c),by=tuple -> last(tuple),rev=true)[1:3]
end


BoundsError: attempt to access 1-element Array{Pair{String,Int64},1} at index [1:3]
为什么会这样?为什么在for循环中进行排序会抛出BoundsError?有没有可能用其他方法来完成我想要的? 当c是一个Dict{String,Int64}调用c=sortcollectc时,任何帮助都将非常感谢。。。用成对向量数组{Pair{String,Int64},1}覆盖它。 因此,它不是在循环中工作的

如果您希望Dict只包含3个最常用的条目,您可以使用:

c = Dict(sort(collect(c),by=tuple -> last(tuple),rev=true)[1:3])

但正如你可能已经知道的,Dict没有命令。有来自模块数据结构的OrderedDict用于此目的。

您能否解释一下,通过将作用于整个字典的函数移动到循环中进行迭代,您试图实现什么?我只希望for循环检索c。也就是说,为了得到与第三个块中显示的结果相同的结果,使用单个for循环。首先,在这种情况下,sort函数将被调用i次,即使它以这种方式工作,而不是仅调用一次,这可能是您不需要的。第二,当你正在构建的字典只有1到2个元素时,你不能访问元素1到3。我解决了定义函数的问题。无论如何,我只是想知道是否可以在for循环中插入sort。非常感谢。