在字典中使用不可变数据类型作为键值

2024-05-08 19:10:29 发布

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

您好,我似乎无法让我的代码返回任何值

我最初的代码是:

 room_numbers = {
    ['Freddie', 'Jen']: 403,
    ['Ned', 'Keith']: 391,
    ['Kristin', 'Jazzmyne']: 411,
    ['Eugene', 'Zach']: 395
    }

下面列出了我的新代码

room_numbers = {
tuple (['Freddie', 'Jen']): (403),
tuple (['Ned', 'Keith']): 391,
tuple (['Kristin', 'Jazzmyne']): 411,
tuple (['Eugene', 'Zach']): 395
}

我更改了它,以便使用正确的数据类型。我理解不能对字典使用可变数据类型,Python要求我们对字典中的键使用不可变数据类型。然而,我不知道如何使用字典。然而,当我尝试调用不同的数据类型时,我无法打印任何结果

如果我在上述代码中所做的更改是正确的,您能否回答我为什么不能执行以下操作:

print (room_numbers['Freddie'])  #why does this not return 403?

我想调用unique键来返回分配给它们的惟一值。python代码的流程是什么


Tags: 代码字典room数据类型printnumberstuplened
2条回答

如果此词典中有tuple项作为键:

room_numbers = {
     ('Freddie', 'Jen'): 403,
     ('Ned', 'Keith'): 391,
     ('Kristin', 'Jazzmyne'): 411,
     ('Eugene', 'Zach'): 395
     }

您希望通过为同一元组的所有名称创建一个具有相同值的每个名称的键来转换此词典。通过字典理解来实现:

flat_dict = {k:v for kt,v in room_numbers.items() for k in kt}

结果:

>>> flat_dict
{'Freddie': 403, 'Jen': 403, 'Ned': 391, 'Keith': 391, 'Kristin': 411, 'Jazzmyne': 411, 'Eugene': 395, 'Zach': 395}

现在,访问一个名称将为您提供值

没有为room_numbers['Freddie']返回任何内容,实际上应该引发一个错误,因为字典room_numbers中没有键Freddie。但是,您可以访问('Freddie', 'Jen')键,因为它存在

room_numbers[('Freddie', 'Jen')]  # or room_numbers['Freddie', 'Jen']

但这可能不是你想要的。你可能在找我

room_numbers = {
    'Freddie': 403,
    'Jen': 403,
    'Ned': 391,
    'Keith': 391,
    ...
}

这允许您执行room_numbers['Freddie'],因为在这个特定的字典中有一个Freddie

相关问题 更多 >