-1

我正在尝试将元素添加到哈希值。例子:

tally={}
tally["aa"]=[1]
tally["aa"].append(2)  => so it should be tally["aa"]=[1,2]

我的代码:

def list_duplicates(seq)
    tally = {}
    seq.each_with_index do |item,i|         
      if tally[item].nil?
        tally[item]=[i]         
      else          
        tally[item].add(i)
      end
    end
    a=tally.keys()
    b=tally.values()
    if b.length>1
      return [a,b]
    end
end


sourse=["AAA","GGG","AAA","BBB","AAA","BBB","agaha"]
list_duplicates(sourse).each do |l|
    puts(l)

end

但它向我显示了一个错误:

undefined method `append' for []:Array (NoMethodError)

如何将项目附加到现有项目的值?

4

3 回答 3

2

您只需要使用pushor<<代替append.

于 2013-05-24T12:49:46.807 回答
2

您可以使用push()<<append()Ruby中没有Array

tally["aa"].push(a)或者tally["aa"] << a

阵列文档here

于 2013-05-24T12:50:09.233 回答
1

Ruby文档中没有显示 Array 的“附加”方法。而且您的代码示例显示add, not append,这也不是 Array 的方法。使用tally[item] << i.

于 2013-05-24T12:50:24.460 回答