如何在Julia的for循环中插入sort函数?

时间:2018-02-14 06:29:33

标签: string sorting for-loop julia

我在朱莉娅演奏了一些字符串,我制作了一个简单的for循环来将某些单词的频率存储在字典中。

假设我有这个字符串

df = pd.read_csv(file)
print (df)
      st_dt    end_dt
0  20100315  20100431
1  20100315  20100430

df['st_dt'] = pd.to_datetime(df['st_dt'], errors='coerce', format='%Y%m%d')
df['end_dt'] = pd.to_datetime(df['end_dt'], errors='coerce', format='%Y%m%d')

df['diff'] = (df['end_dt'] - df['st_dt']).dt.days
print (df)
       st_dt     end_dt  diff
0 2010-03-15        NaT   NaN
1 2010-03-15 2010-04-30  46.0

然后我将y定义为split(x)和空字典

x="hola perro hola te huele tu patita perro perro cola colita hola hola hola sí como no"

最后循环和循环外的sort函数,以获得前3个单词:

y=split(x, r"\W", keep=false)
c=Dict{String,Int64}()

在循环中插入最后一个命令时出现此错误:

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循环中排序会引发BoundsError?是否有可能使用任何其他方法完成我想要的东西? 任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

虽然cDict{String,Int64}(),但c = sort(collect(c)...的调用会使用对的向量(Array{Pair{String,Int64},1})覆盖它。 因此它不能循环工作。

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

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

但正如你可能已经知道的那样,Dict没有任何东西。模块OrderedDict中有DataStructures