String 如何在Julia中的for循环中插入排序函数?
我在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
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。非常感谢。