我是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"}}}
}
我做错了什么以及如何解决?
答案 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"])