首页 > 解决方案 > 如何从嵌套字典中获取随机值?

问题描述

所以,我对 Python 还很陌生,现在正试图在一些书籍的帮助下自学。我目前正在从事一个个人项目,我在其中模拟一手扑克牌。我有一本字典,里面有四个嵌套字典,代表每种花色,对于每个字典,我都有所有可能出现的卡片。

我已经尝试寻找获取这些值的方法,但我发现的所有内容要么适用于 Python 2.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}
}

我想创建一个函数,它会返回一张随机卡片,我可以从甲板变量中获取一个随机值,使用random.choice(list(deck.keys())),但我无法进入那些字典,我觉得这真的很简单,我只是哑的。

标签: pythondictionaryrandom

解决方案


我可以从甲板变量中获得一个随机值,使用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]like访问每张卡内部的值

print(deck[suit][value])

哪个打印:

1

推荐阅读