gpt4 book ai didi

python-2.7 - 为什么我在构建字典时会得到 "unhashable type: ' set'"?

转载 作者:行者123 更新时间:2023-12-02 12:18:26 24 4
gpt4 key购买 nike

我对Python相当陌生,试图构建一个键和值的字典,其中值是带有键和值的字典。这个想法是,如果值在值列表中,则返回键。我有工作代码,但当我尝试添加第二个字典时它会中断。

这有效:

lookup = {
3: ("TRUE", ["t", "true", "1", "yes"]),
4: ("FALSE", ["f", "false", "0", "no"])
}

这不起作用:

lookup = {
3: {{"TRUE", {"t", "true", "1", "yes"}}, {"FALSE", {"f", "fake", "farce", "fallacy", "falsehood"}}},
4: {{"FALSE", {"f", "false", "0", "no"}}}
}

我做错了什么以及如何解决它?

最佳答案

如果您想要一个包含键的字典,则不能使用 {"t", "true", "1", "yes"} 等的集合。多个值使用列表、元组或集合来存储值,但您不能使用集合作为键,因为它们不可散列,您还需要创建键配对:

lookup = {
3:{"TRUE": ["t", "true", "1", "yes"], "FALSE":["f", "fake", "farce", "fallacy", "falsehood"]},
4: {"FALSE": ["f", "false", "0", "no"]}}

集合可以使用set([1,2,3]){1,2,3}创建,后者确实类似于字典,什么是字典语法的不同之处在于键/值对,即 {1:[1,2]}

为了了解使用集合语法的不同方法,请查看创建相同的字典,其中多个值存储在集合中:

lookup = {
3:{"TRUE": {"t", "true", "1", "yes"}, "FALSE":{"f", "fake", "farce", "fallacy", "falsehood"}},
4: {"FALSE": set(["f", "false", "0", "no"])}}

访问元素:

In [17]: lookup[3]["TRUE"]
Out[17]: {'1', 't', 'true', 'yes'}

In [18]: lookup[3]["FALSE"]
Out[18]: {'f', 'fake', 'fallacy', 'falsehood', 'farce'}

在你的原始字典中,你有键 3,4,然后每个键的值存储在一个元组中,该元组包含两个项目:一个字符串和一个字符串列表:

("TRUE", ["t", "true", "1", "yes"])

关于python-2.7 - 为什么我在构建字典时会得到 "unhashable type: ' set'"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28331846/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com