python - 在一个字典中更新多个字典
问题描述
CLUB_CARDS = range(13)
DIAMONDS_CARDS = range(13, 26)
HEART_CARDS = range(26, 39)
SPADE_CARDS = range(39, 52)
CARDS = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K"]
def get_cards():
d = {k: v for k, v in zip(CLUB_CARDS, CARDS)}
d.update({k: v for k, v in zip(DIAMONDS_CARDS, CARDS)})
d.update({k: v for k, v in zip(HEART_CARDS, CARDS)})
d.update({k: v for k, v in zip(SPADE_CARDS, CARDS)})
return d
如何重构这段代码?
解决方案
如果重构的目标是简化这一点,您可以使用itertools.cycle()
在一个范围内循环卡片:
from itertools import cycle
CARDS = ["A", "2", "3", "4", "5", "6", "7", "8", "9", "T", "J", "Q", "K"]
def get_cards():
return {k: v for k,v in zip(range(52), cycle(CARDS))}
get_cards()
它返回相同的东西:
{0: 'A',
1: '2',
2: '3',
3: '4',
4: '5',
...
48: 'T',
49: 'J',
50: 'Q',
51: 'K'}
不确定您是如何使用它的,但由于键只是有序整数,因此作为列表可能更有意义。