一个选项就是使用python的内置函数random.shuffle。不要打扰词典;只需创建一个卡片列表并将其整个随机播放:
>>> import random
>>> ranks = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'K', 'Q']
>>> suits = ['C', 'D', 'H', 'S']
>>> cards = [[rank, suit] for rank in ranks for suit in suits]
>>> random.shuffle(cards)
>>> cards
[['J', 'S'], ['2', 'S'], ['3', 'S'], ['9', 'S'], ['9', 'D'], ['5', 'S'],
['8', 'H'], ['A', 'C'], ['4', 'D'], ['Q', 'H'], ['2', 'C'], ['Q', 'D'],
['7', 'H'], ['4', 'C'], ['7', 'S'], ['6', 'C'], ['K', 'H'], ['6', 'S'],
['9', 'C'], ['9', 'H'], ['A', 'H'], ['J', 'C'], ['2', 'D'], ['J', 'H'],
['3', 'H'], ['4', 'H'], ['8', 'C'], ['Q', 'S'], ['10', 'S'], ['A', 'S'],
['K', 'S'], ['5', 'D'], ['10', 'D'], ['8', 'D'], ['7', 'C'], ['5', 'C'],
['Q', 'C'], ['3', 'D'], ['8', 'S'], ['6', 'H'], ['A', 'D'], ['2', 'H'],
['6', 'D'], ['K', 'D'], ['10', 'C'], ['5', 'H'], ['4', 'S'], ['K', 'C'],
['7', 'D'], ['10', 'H'], ['3', 'C'], ['J', 'D']]如果您需要自己动手,请考虑Fisher-Yates shuffle。这非常简单。
冒着明显可怕的风险,一旦你有一个洗牌清单,你可以简单地通过切片来处理它:
>>> hand1 = cards[0:13]
>>> hand2 = cards[13:26]
# ...and so on...或者以您需要的任何更复杂的方式。 (但是,请注意,没有必要循环通过手或类似的东西;因为它已经是随机的,简单的切片就足够了。)