Poker deck class /w generator function and list comprehensions
[card for card in Deck.generator(…)] could be written as list(Deck.generator(…)).

Better yet, use itertools.product():

self.cards = [
    {'suit': suit, 'rank': rank}
    for suit, rank in itertools.product(xrange(4), xrange(13))
]


In Python 2, you should be using xrange() rather than range().

It's probably worth defining a Card class.  At some point, you'll want to have suits that are named rather than numbered, and ranks A, J, Q, K rather than 0..12.

To deal multiple cards, you can slice the list instead of popping one card at a time:

def deal(self, n):
    hand = self.cards[-1 : -n-1 : -1]
    self.cards = self.cards[: -n]
    return hand