【问题标题】:Trying to pull random items from a nested dictionary试图从嵌套字典中提取随机项目
【发布时间】:2023-02-04 09:01:38
【问题描述】:

我是新人,我现在才学了一个星期。我一直在浏览在线资源,现在我正在尝试制作一个小型猫生成器,我可以让它随机化我想要的品种,但我无法让它给我颜色、毛长、图案

import random

breeds = {
    'bengal': {
        'colors' : ['red', 'black', 'grey'],
        'length': ['short', 'medium', 'long'],
        'pattern': ['spotted', 'marbled']
        },
    'tabbycat': {
        'colors' : ['grey', 'blue', 'silver'],
        'length' : ['short', 'medium', 'long'],
        'pattern' : ['mackeral', 'classic']
        }
    }

breed = random.choice(list(breeds))
color = random.choice(list(breeds['colors']))


print(breed.title())
print(color.title())


这段代码告诉我 KeyError: 'colors',我也看到 'colors' 未定义,所以我在访问嵌套位时遇到问题,我不确定为什么。

【问题讨论】:

    标签: dictionary random


    【解决方案1】:

    list(breeds) 函数只是给你这个:['bengal', 'tabbycat'],其中显然没有 "colours"

    想想字典是如何被访问的——字典有一个包含值的键。您需要访问内部字典中的 "colors"其他字典,这意味着您需要两个键 - 第一个是品种(由breed = random.choice(list(breeds))行选择,第二个键是"colors"(返回可能的颜色列表)。

    包括外套长度和图案的固定版本可能看起来像这样:

    import random
    
    breeds = {
        'bengal': {
            'colors' : ['red', 'black', 'grey'],
            'length': ['short', 'medium', 'long'],
            'pattern': ['spotted', 'marbled']
            },
        'tabbycat': {
            'colors' : ['grey', 'blue', 'silver'],
            'length' : ['short', 'medium', 'long'],
            'pattern' : ['mackeral', 'classic']
            }
        }
    
    breed = random.choice(list(breeds))
    color = random.choice(breeds[breed]["colors"])
    coat_length = random.choice(breeds[breed]["length"])
    pattern = random.choice(breeds[breed]["pattern"])
    
    print(breed.title())
    print(color.title())
    print(coat_length.title())
    print(pattern.title())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-09
      • 2021-06-02
      • 2020-01-26
      • 1970-01-01
      • 2011-06-16
      • 2020-01-21
      • 1970-01-01
      • 2023-02-04
      相关资源
      最近更新 更多