2015-02-04 21 views
2

我對Python相當陌生,試圖構建一個鍵和值的字典,其中的值是包含鍵和值的字典。這個想法,如果一個值在值列表中,返回鍵。我有工作代碼,但是當我嘗試添加第二個字典時會中斷。爲什麼我在構建字典時遇到「不可用類型:'set'」?

這工作:

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

你不能使用一個集合,它是什麼{"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]}

只是看不同的方式來使用se T語法看看創造在多個值存儲在臺同樣的字典:

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"]) 
相關問題