如何从嵌套字典中获取随机值?

2024-04-20 12:14:59 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我对Python还比较陌生,现在正试图借助一些书籍自学。我目前正在做一个个人项目,我模拟一手扑克牌。我有一本字典,里面有四个嵌套的字典代表每件衣服,每一本字典我都有所有卡片。你知道吗

我尝试过寻找获取这些值的方法,但是我找到的所有东西要么都是针对Python2.x的,不再工作了,要么似乎只深入了一本字典。你知道吗

deck = {
    'Spades': {'Aces': 1, 'Twos': 1, 'Threes': 1, 'Fours': 1, 'Fives': 1, 'Sixes': 1, 'Sevens': 1, 'Eights': 1, 'Nines': 1, 'Tens': 1, 'Jacks': 1, 'Queens': 1, 'Kings': 1},
    'Diamonds': {'Aces': 1, 'Twos': 1, 'Threes': 1, 'Fours': 1, 'Fives': 1, 'Sixes': 1, 'Sevens': 1, 'Eights': 1, 'Nines': 1, 'Tens': 1, 'Jacks': 1, 'Queens': 1, 'Kings': 1},
    'Hearts': {'Aces': 1, 'Twos': 1, 'Threes': 1, 'Fours': 1, 'Fives': 1, 'Sixes': 1, 'Sevens': 1, 'Eights': 1, 'Nines': 1, 'Tens': 1, 'Jacks': 1, 'Queens': 1, 'Kings': 1},
    'Clubs': {'Aces': 1, 'Twos': 1, 'Threes': 1, 'Fours': 1, 'Fives': 1, 'Sixes': 1, 'Sevens': 1, 'Eights': 1, 'Nines': 1, 'Tens': 1, 'Jacks': 1, 'Queens': 1, 'Kings': 1}
}

我想创建一个函数,返回一个随机卡,我可以从deck变量中得到一个随机值,使用random.choice(list(deck.keys())),但是我不能进入那些字典,我觉得它非常简单,我只是在装傻。你知道吗


Tags: 字典deckqueenskingssevenssixestwostens
3条回答

I can get one random value from the deck variable, using random.choice(list(deck.keys()))

你为什么不重复一遍?首先,随机选择西装,然后随机选择卡片。你知道吗

suit = random.choice(list(deck))
value = random.choice(list(deck[suit]))
print(suit, value)

可以打印例如:

Diamonds Fives

(顺便说一下,在将键转换为列表时,可以省略.keys()

另外,我不知道您是否需要这些值,也不知道这些值是用来做什么的,但是您可以使用deck[suit][value]这样的方法访问每个卡的内部值

print(deck[suit][value])

打印内容:

1

首先,像现在一样随机选择一套西装。你知道吗

suit = random.choice(list(deck.keys()))

然后进入字典的卡,特别是西装,并随机选择卡以同样的方式。你知道吗

random.choice(list(deck[suit].keys()))

这就是你要找的吗?你知道吗

suit = random.choice(list(deck))
value = random.choice(list(deck[suit]))

例如:

from random import choice

deck = {'Spades': {'Aces':1, 'Twos': 1, 'Threes': 1, 'Fours': 1, 'Fives': 1, 'Sixes': 1, 'Sevens': 1, 'Eights': 1, 'Nines': 1, 'Tens': 1, 'Jacks': 1, 'Queens': 1, 'Kings': 1},
'Diamonds': {'Aces':1, 'Twos': 1, 'Threes': 1, 'Fours': 1, 'Fives': 1, 'Sixes': 1, 'Sevens': 1, 'Eights': 1, 'Nines': 1, 'Tens': 1, 'Jacks': 1, 'Queens': 1, 'Kings': 1},
'Hearts': {'Aces':1, 'Twos': 1, 'Threes': 1, 'Fours': 1, 'Fives': 1, 'Sixes': 1, 'Sevens': 1, 'Eights': 1, 'Nines': 1, 'Tens': 1, 'Jacks': 1, 'Queens': 1, 'Kings': 1},
'Clubs': {'Aces':1, 'Twos': 1, 'Threes': 1, 'Fours': 1, 'Fives': 1, 'Sixes': 1, 'Sevens': 1, 'Eights': 1, 'Nines': 1, 'Tens': 1, 'Jacks': 1, 'Queens': 1, 'Kings': 1}}

suit = choice(list(deck))
value = choice(list(deck[suit]))

print(suit, value)

印刷品:

Clubs Sixes

相关问题 更多 >