首页 > 解决方案 > 对字典中的键使用不可变数据类型

问题描述

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

我的原始代码是:

 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?

我想调用唯一键来返回分配给它们的唯一值。这个过程的python代码是什么?

标签: pythondictionarytuples

解决方案


没有返回任何内容room_numbers['Freddie'],实际上应该引发错误,因为Freddie字典中没有键room_numbers。但是,您可以访问('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键。


推荐阅读