2010-02-19 72 views
4

我的數據結構的方式,我結束了在我的設計創建嵌套字典,如:設計中的嵌套字典好嗎?

my_dict = {"a": {"b": {"c":"I am c"}}} 
my_dict["a"]["b"]["c"] 

是不是往常一樣!或者我們有其他更好的選擇(使用對象!)?

+2

您發佈的代碼並不代表嵌套字典。 – 2010-02-19 18:44:41

+0

也許[a,[b,c]]? – 2010-02-19 18:47:52

+0

雖然人們會理解,所以只是訪問我的嵌套字典! – Vishal 2010-02-19 18:48:40

回答

7

嵌套字典沒有什麼固有的錯誤。任何東西都可以是一個字典的價值,並且它可以成爲一個字典。

當人們製作嵌套字典時,很多時候他們的問題可以通過使用帶有元組的鍵的字典來輕鬆解決。而不是像d[a][b][c]那樣訪問一個值,那麼該值將被訪問爲d[a, b, c]。這通常更容易建立和使用。

+0

元組的開銷也比字典小得多。 – Ponkadoodle 2010-02-19 18:49:10

+0

謝謝,我能舉個例子嗎? – Vishal 2010-02-19 19:59:11

+1

示例:'d [(a,b,c)] = x' – 2010-02-19 20:01:03

7

你可以使用一個元組的值存儲在一個平坦的詞典:

d = {} 
d[a, b, c] = e 

這一切都取決於你在做什麼,但請記住,The Zen of Python說,扁平比嵌套:)更好

+0

+1引用禪宗 – Triptych 2010-02-19 19:43:57

+0

+1「這取決於你在做什麼」 – MatrixFrog 2010-02-19 21:31:57

1

起初他們可能看起來不錯,但通常你會發現自己需要更多的信息/功能。如果發生這種情況,你的第一反應可能是「我需要更多的哈希」,但所有這些都可以通過使用更簡單的層次結構來避免......它也更容易。

0

我不會像代碼本身那樣構建複雜的數據結構。標點符號出現錯誤的風險太大,閱讀代碼的任何人都會因此而感到困惑。最好把你的常量數據放在一些簡單的形式中,而不要嵌套數據結構。然後,如果您需要在應用中嵌入字典,請使用代碼構建它。

a = {"a":"I am a"} 
b = {"b":"I am b"} 
c = {"c":"I am c"} 
mydict = {} 
mydict["a"] = a 
mydict["b"] = b 
mydict["c"] = c 
print mydict 

{'a': {'a': 'I am a'}, 'c': {'c': 'I am c'}, 'b': {'b': 'I am b'}} 
0

也許一個嵌套的字典是好的......但即使如此,你要求得到更高迷茫,有一個非常好的機會,如果你已經做嵌套東西,你會想了解更多信息它後來。

一般來說,我會說退後一步,看看是否需要在字典中的所有信息。嘗試首先簡化它。如果真的需要,我會盡量爲它做一個簡單的課程。可能會有點矯枉過正,但正如我所說的,如果你已經走上了這條路,你可能會在以後增加更多的信息。修改一個類要比試圖找出所有嵌套的信息並讓代碼稍後使用它更容易。