Even if pick() chose random, you still might end up picking the same card twice. Is that really what you intended?
FWIW, I've been working on an extension module that supplies a "sortedset" type . In most ways, it's similar to a set except it's indexable like a list. The items are kept in sorted order, so index 0 is always the lowest item, index 1 is the next-to-lowest, etc. Because they're indexable, it's easy and efficient to retrieve random elements using the standard library's "random" module.
With the sortedset type, that function would become: