为什么我会得到"不可用类型:' set'"在建一本字典?

时间:2015-02-04 21:31:13

标签: python-2.7

我是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"}}}
}

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

1 个答案:

答案 0 :(得分:2)

你不能使用{"t", "true", "1", "yes"}等等的集合,如果你想要一个dicts的字典,其中键有多个值,使用列表,元组或者确实是一个存储值的集合,但你不能使用设置为键,因为它们不可清除,您还需要创建密钥对:

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}创建

集合,后者确实类似于dict,dict语法中的不同之处是键/值配对,即{1:[1,2]}

只是看看使用set语法的不同方法可以看一下创建相同的dict,其中多个值存储在集合中:

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"])
相关问题