我在朱莉娅演奏了一些字符串,我制作了一个简单的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?是否有可能使用任何其他方法完成我想要的东西? 任何帮助将不胜感激
答案 0 :(得分:0)
虽然c
是Dict{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
。