Ruby,Hash-将元素附加到现有值

时间:2013-05-24 12:46:02

标签: ruby

我正在尝试向哈希值添加元素。 例如:

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)

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

3 个答案:

答案 0 :(得分:2)

您只需使用push<<代替append

答案 1 :(得分:2)

您可以使用push()<<。在append()

中,Ruby中没有Array

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

Documentation for Array here

答案 2 :(得分:1)

Ruby documentation中显示的Array没有“append”方法。您的代码示例显示add,而不是append,它也不是Array的方法。使用tally[item] << i