Search code examples
rubyhash-of-hashes

How do I delete a key from a hash?


I have a hash of hashes representing a deck of cards, I am trying to figure out how I would delete a specific card from the deck. Please let me know any suggestions or methods I should be learning or reading up on to help.

@deck_of_cards = {
  :hearts => {:two => 2, :three => 3, :four => 4, :five => 5, :six => 6, :seven => 7, :eight => 8, :nine => 9, :ten => 10, :jack => 10, 
              :queen => 10, :king => 10, :ace => 11},
  :spades => {:two => 2, :three => 3, :four => 4, :five => 5, :six => 6, :seven => 7, :eight => 8, :nine => 9, :ten => 10, :jack => 10, 
              :queen => 10, :king => 10, :ace => 11},
  :clubs => {:two => 2, :three => 3, :four => 4, :five => 5, :six => 6, :seven => 7, :eight => 8, :nine => 9, :ten => 10, :jack => 10, 
              :queen => 10, :king => 10, :ace => 11},
  :diamonds => {:two => 2, :three => 3, :four => 4, :five => 5, :six => 6, :seven => 7, :eight => 8, :nine => 9, :ten => 10, :jack => 10, 
              :queen => 10, :king => 10, :ace => 11}
}

Solution

  • It's pretty straightforward

    def delete a, b
      @deck_of_cards[a].delete(b)
    end
    
    delete :hearts, :three
    
    @deck_of_cards # => {:hearts=>{:two=>2, :four=>4, :five=>5, :six=>6, ...