如何从单个时间内的3个词典中获取一个随机密钥

问题描述 投票:0回答:2

我试图通过一次尝试从我的3个词典中获取一个随机密钥。

我在一行中尝试了三次代码,但这给了我三个不同的随机生成的值。

import random
print("Welcome to Blackjack(21) Card Game!")
backjack = 21
number_cards_points = {"2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9}
face_cards_points = {"J":10, "Q":10, "K":10}
acis_cards_points = {"A":1, "A":11}
print(random.choice(list(number_cards_points)))

我希望这三个词典中有一个单一的密钥值。我是初学者,如果你有一些先进的方法来实现它,请与我分享。谢谢

python-3.x
2个回答
1
投票

合并所有dicts(保留您希望覆盖的顺序)。然后在random.choice列表中使用items

import random
print("Welcome to Blackjack(21) Card Game!")
backjack = 21
number_cards_points = {"2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9}
face_cards_points = {"J":10, "Q":10, "K":10}
acis_cards_points = {"A":1, "A":11}
print(
    random.choice(
        list({
             **number_cards_points, 
             **face_cards_points, 
             **acis_cards_points
             }.items()
         )
     )
)

0
投票

制作另一个列表并从中绘制可能会更好:

number_cards_points = {"2": 2, "3": 3, "4": 4, "5": 5, "6": 6, "7": 7, "8": 8, "9": 9}
face_cards_points = {"J":10, "Q":10, "K":10}
acis_cards_points = {"A":1, "A":11}

import random

cards = "2 3 4 5 6 7 8 9 J Q K A".split() 
# or use
# cards = list(number_cards_points) + list(face_cards_points) + list(acis_cards_points)

key = random.choice( cards )

print(key, number_cards_points.get(key, 
               face_cards_points.get(key, 
                   acis_cards_points.get(key))))

输出:

5 5

K 10

3 3

J 10

9 9

number_cards_points.get(rnd,face_cards_points.get(rnd, acis_cards_points.get(rnd))))查看所有词典,直到找到正确的词典,为绘制的键提供值

© www.soinside.com 2019 - 2024. All rights reserved.