2016-02-24 76 views
-1

有沒有辦法在字典中創建子字典?一個例子是一個州的城市字典,那個城市的街道,最後是那條街上的房屋號碼?我正在構建一個電路配置構建計劃,在該計劃中我已經編制了IDF中的IDF位置和設備。然後我使用該字典爲Tkinter中的MenuBox生成列表項。我的最終目標是能夠將諸如IP地址,上行鏈路端口和機架位置之類的東西與該設備相關聯,但是將這些信息隱藏給用戶。我現在設置的方式是將所有信息附加到表示齒輪的字符串的末尾,然後使用string.split()將信息拉入相應的變量。與此相關的問題是,用戶可以看到所有內容,並且看起來很混亂。下面是我想怎麼設置它Python子字典/字典中的列表

dict = {'Toledo': ['Main': ['1234', '4321'], 'First st': ['312', '412', '1234'], 'Second st': ['1243, '3213', 4123']], 
    'Cleveland': ['Third st': ['1234', '593], 'Front st': ['321', '467', '12340']], 
    'Cincinnati': ['Bishop': ['5901', '1234'], 'Wells': ['1234', '1234', '8842]]} 
strAddress = tk.StringVar() 
strStreet = tk.StringVar() 
optCity = tk.OptionMenu(master, strAddress, *dict.keys()) 
entCust = tk.Entry(master, textvariable=strStreet) 
print(strAddress.get(strStreet.get()[1] + ' ' + strStreet.get() + ', ' + strAddress.get()) 

這將打印出一個例子「1234主,托萊多」如果用戶從選項菜單中選擇托萊多和類型主要爲輸入框。請讓我知道,如果你需要更多的信息,或者如果我的代碼是錯誤的,我是非常新的python

+0

您正在使用'['Main':...]'而不是'{'Main':...}'。 – zondo

回答

1

是的,這是可能的。

data = { 
    "Toledo": { 
     "Main": [12, 23] 
    }, 
    "Cleveland": { 
     "Third st": ['1234', '593'] 
    } 
} 

就是一個例子。你也可以這樣創建它:

data = dict() 
data["Toledo"] = { 
    "Main": [12, 23] 
} 
data["Cleveland"] = { 
    "Third st": ['1234', '593'] 
} 

NB。不要使用dict作爲變量名稱。 dict是內建字典類型的保留關鍵字。

0

你錯了的東西是,你試圖建立一個列表而不是字典(用[]的{}爲次要字典)。 例如你可以這樣做:

states = {'usa': {'GA': 'Atlanta'}, 'Canada': {'Ontario': 'Toronto'}}