changing hash key

T

Tim Wolak

I am working with a script to record accounts and their balances. I
need to check the key in a hash and if the account number is already
there just add the blanace to the value. So far this is what I have and
its not quite doing what I need. Is my test not right? I get all the
account numbers and their balances instead of a list with the accounts
and balances without the duplicate account numbers.

Thanks,
Tim

sktylist = Hash.new("")
if sktylist.has_key?('@acctnum')
sktylist.merge!('@acctnum' => 'value')
else
sktylist[@acctnum] = [value]
end
sktylist.each { |key, value| puts "#{key} equals #{value}"
}
 
S

Sandro Paganotti

This is not working because you're using a string called '@acctnum'
instead of the content of the variable @acctnum inside both has_key? and
merge functions

First remove ' signs from that functions, next I suggest you to use
symbols instead
of variables for keys (@acctnum.to_sym instead of @acctnum)

Bye

sktylist = Hash.new("")
if sktylist.has_key?('@acctnum')
sktylist.merge!('@acctnum' => 'value')
else
sktylist[@acctnum] = [value]
end
sktylist.each { |key, value| puts "#{key} equals #{value}"
}

I am working with a script to record accounts and their balances. I
need to check the key in a hash and if the account number is already
there just add the blanace to the value. So far this is what I have and
its not quite doing what I need. Is my test not right? I get all the
account numbers and their balances instead of a list with the accounts
and balances without the duplicate account numbers.

Thanks,
Tim

sktylist = Hash.new("")
if sktylist.has_key?('@acctnum')
sktylist.merge!('@acctnum' => 'value')
else
sktylist[@acctnum] = [value]
end
sktylist.each { |key, value| puts "#{key} equals #{value}"
}
 
T

Tim Wolak

Sandro said:
This is not working because you're using a string called '@acctnum'
instead of the content of the variable @acctnum inside both has_key? and
merge functions

First remove ' signs from that functions, next I suggest you to use
symbols instead
of variables for keys (@acctnum.to_sym instead of @acctnum)

Bye

sktylist = Hash.new("")
if sktylist.has_key?('@acctnum')
sktylist.merge!('@acctnum' => 'value')
else
sktylist[@acctnum] = [value]
end
sktylist.each { |key, value| puts "#{key} equals #{value}"
}

I've created the hash and can store all keys and values however I'm
trying += to add the balances which is value in the hash. So far the
accounts that have the same number are not being consolidated into one
key, value.... Can someone tell me what I'm doing wrong with this?

Thanks,
Tim

sktylist = Hash.new("")
sktylist[@acctnum] += [value]
p sktylist
 
R

Robert Dober

Sandro said:
This is not working because you're using a string called '@acctnum'
instead of the content of the variable @acctnum inside both has_key? and
merge functions

First remove ' signs from that functions, next I suggest you to use
symbols instead
of variables for keys (@acctnum.to_sym instead of @acctnum)

Bye

sktylist = Hash.new("")
if sktylist.has_key?('@acctnum')
sktylist.merge!('@acctnum' => 'value')
else
sktylist[@acctnum] = [value]
end
sktylist.each { |key, value| puts "#{key} equals #{value}"
}

I've created the hash and can store all keys and values however I'm
trying += to add the balances which is value in the hash. So far the
accounts that have the same number are not being consolidated into one
key, value.... Can someone tell me what I'm doing wrong with this?


Thanks,
Tim

sktylist = Hash.new("")
sktylist[@acctnum] += [value]
p sktylist
Given the limited amount of information I have I would guess that you
might doing this

TypeError: can't convert Array into String

wrong.

HTH
Robert
 
D

Damjan Rems

How about:

sktylist = Hash.new
sktylist.[@acctnum] ||= 0
sktylist.[@acctnum] += value


by
TheR
 
S

Sebastian Hungerecker

Damjan said:
=C2=A0 =C2=A0sktylist =3D Hash.new
=C2=A0 =C2=A0sktylist.[@acctnum] ||=3D 0

sktylist =3D Hash.new(0)


=2D-=20
NP: Depeche Mode - Strangelove
Jabber: (e-mail address removed)
ICQ: 205544826
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

No members online now.

Forum statistics

Threads
473,982
Messages
2,570,189
Members
46,735
Latest member
HikmatRamazanov

Latest Threads

Top