Python 字典-使用相应的值匹配随机键
这是一副假想的牌,即21点中的一副。 在定义Python 字典-使用相应的值匹配随机键,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,这是一副假想的牌,即21点中的一副。 在定义手动值函数时需要帮助 facevalue={'A':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'10':10,'J':10,'Q':10,'K':10} deck = [key for key in self.facevalue.keys()]*4 card_values = [value for value in self.facevalue.values()]*4 当我弹出两张卡片时,我如
手动值
函数时需要帮助
facevalue={'A':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9,'10':10,'J':10,'Q':10,'K':10}
deck = [key for key in self.facevalue.keys()]*4
card_values = [value for value in self.facevalue.values()]*4
当我弹出两张卡片时,我如何得到它们对应的值?问题是键和值在洗牌后不再在一起。说
import random
shuffled_deck = random.sample(deck, len(deck))
与hand[0]
和hand[1]
相对应的值是什么
让我重新表述一下——在分解字典之后,有没有办法将以前的键与其对应的值进行匹配?
deck
仅由键组成;要获得匹配的面值,只需再次查找:
def hand_value():
hand = []
for i in range(2):
hand.append(shuffled_deck.pop())
score = ???
return score
为拾取的手生成值列表;您还可以使用sum()
和生成器表达式生成它们的总和:
[facevalue[card] for card in hand]
使用<代码>卡/代码>对象将更容易保持面值和值。如果您不想再次查找,可以考虑将其存储为元组。另外,请看一下关于…洗牌的
shuffle
。我原以为一旦我把字典拆开,我就不能再查了,但它确实有用——谢谢。@AlvinLepik:你所做的只是从字典中提取信息;你从未更改过字典本身,也没有丢失对它的引用。
score = sum(facevalue[card] for card in hand)