Remove a record if it is duplicate end sum values

I have a hash like so:

list=[

{:cod => “0001”, :name => “name1”, :val => 10},

{:cod => “0001”, :name => “name1”, :val => 12},

{:cod => “0002”, :name => “name2”, :val => 13},

{:cod => “0002”, :name => “name2”, :val => 14},

{:cod => “0002”, :name => “name2”, :val => 14},

{:cod => “0004”, :name => “name4”, :val => 16},

{:cod => “0004”, :name => “name4”, :val => 16},

{:cod => “0004”, :name => “name4”, :val => 17},

{:cod => “0005”, :name => “name5”, :val => 17},

{:cod => “0005”, :name => “name5”, :val => 17},

{:cod => “0005”, :name => “name5”, :val => 17},

{:cod => “0006”, :name => “name6”, :val => 110},

{:cod => “0006”, :name => “name6”, :val => 10},

]

What I would like to learn how to do is how to remove a record if it is duplicate end sum values :val.

try

list.uniq

kind regards -botp

Thanks for replay, but this solution only remove the duplication of values and sum of values duplication?

Thanks again.

pls show what output you really want.

Botp, thanks for replay, this is solution:

list.inject(Hash.new(0)) { |hash, el| hash[el[:cod]] += el[:val] ; hash }

I want it out:

{“0006”=>120, “0005”=>17, “0004”=>33, “0002”=>27, “0001”=>22}

Thanks for replay again.