2016-12-10 33 views
0

我是新來的Python,我有一個問題,我需要從字典中的鍵是元組中獲取值的問題。例如:當鍵是一個元組時訪問字典值

ones = {(1,2,6,10):3, (4,5,9):4, (3,7,8):5} 

我知道,每個號碼出現的人的鑰匙,我要訪問其中關鍵在數字2的值(該值將是3)。

我可以獲得有關如何訪問此值的任何幫助嗎?

+1

字典應該包含您打算與訪問它的鍵。 – TigerhawkT3

回答

1

你可以「變平」使用下面的理解字典:

ones = {(1,2,6,10):3, (4,5,9):4, (3,7,8):5} 

flat = {element: value for key, value in ones.items() for element in key} 

現在,你可以通過flat得到的元組任意鍵的值。

1

可以遍歷那些,並檢查2出現在關鍵

In [24]: ones = {(1,2,6,10):3, (4,5,9):4, (3,7,8):5} 

In [25]: for k, v in ones.iteritems(): 
    ....:  if 2 in k: 
    ....:   print v 
    ....:   
3 
0

,當你正在尋找一個關鍵的一個子元素不能正常使用的字典訪問。你必須循環:

value_for_2 = next(ones[key] for key in ones if 2 in key) 

會找到第一個匹配(其中'第一'是任意的,因爲字典沒有排序)。

如果你的元組元素真的是獨一無二的,你需要做多個查找窗口,然後將其轉換你的字典第一個使用元組元素鍵,而不是:

converted = {t_elem: value for key in ones for t_elem in key} 

不要擔心這裏重複的價值。值不需要是唯一的,並且您所做的只是存儲參考文獻;上述內容不會創建值的副本。

現在你可以再次使用快捷鍵查詢:

value_for_2 = converted[2] 
0
ones = {(1,2,6,10):3, (4,5,9):4, (3,7,8):5} 
for key, value in ones.items(): 
    if 2 in key: 
     print(value) 

出來:

3