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

时间:2019-09-26 15:58:19

标签: python dictionary random

因此,我是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()))从卡片组变量中获取一个随机值,但是我无法进入这些词典,我觉得它是真的很简单,我只是傻了。

3 个答案:

答案 0 :(得分:2)

  

我可以使用random.choice(list(deck.keys()))从deck变量中获得一个随机值

您为什么不重复一遍?首先,随机选择西服,然后随机选择卡片。

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

答案 1 :(得分:0)

这是您要寻找的吗?

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

答案 2 :(得分:0)

首先,像现在一样随机选择西装。

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

然后访问该特定西装的卡片词典,并以相同的方式随机选择卡片。

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