2013-03-22 64 views
1

我們將使用字典存儲例如:字典存儲對。誰儲存三倍?

a={"breakfast":"banana","lunch":"fish","dinner":"soup"} 

將你的方法是什麼,如果你想添加的時間屬性旁邊每鍵值集。當然不是:

a={"8AM":"breakfast":"banana","2PM":"lunch":"fish","8PM":"dinner":"soup"} 

然後我想用一個或多個鍵來訪問一個值。

也許通過與列表做一個把戲?

+0

你可以用多少個鍵訪問值?顯示一個例子 – jamylak 2013-03-22 23:40:51

+0

使用一個字典,其中的值是元組的類型 – TJD 2013-03-22 23:41:26

回答

2

既然你想使用字典和可能的名單,我建議確定你R「主鍵」是和創建一個嵌套的結構是這樣的:

a = { 
    'breakfast': { 
     'time': "8AM", 
     'items': ['banana', 'yogurt'] 
    }, 
    'lunch': { 
     'time': '2PM', 
     'items': ['fish', 'tartar sauce'] 
    }, 
    'dinner': { 
     'time': '8PM', 
     'items': ['soup', 'salad'] 
    } 
} 

每餐的時間是可變的,但我們都知道我們吃早餐,午餐和晚餐(或者至少我們應該)。這樣做,你就可以判斷被消耗的時間和項目:

a['breakfast']['time'] 
'8AM' 

a['breakfast']['items'] 
['banana', 'yogurt'] 
+4

......在這一點上,你不妨創建一個類。 =) – John 2013-03-22 23:48:53

+0

是的,我同意但該問題明確引用字典和列表 – Fiver 2013-03-22 23:49:57

5

你可以使用一個元組作爲字典鍵:

a = {("8AM", "breakfast"): "banana", 
    ("2PM", "lunch"): "fish", 
    ("8PM", "dinner"): "soup", 
    } 
5

使用帶有一個元組作爲鍵的字典:

>>> a={("8AM","breakfast"):"banana",("2PM","lunch"):"fish",("8PM","dinner"):"soup"} 
>>> a["8AM","breakfast"] 
'banana' 

或者,如果你想要查找的時間和食物只用了一頓名稱:

>>> a={"breakfast":("8AM","banana"),"lunch":("2PM","fish"),"dinner":("8PM","soup")} 
>>> a["breakfast"] 
('8AM', 'banana') 
+0

在這種情況下,您必須編寫整個元組。如果我們只想使用「早餐」而不是「8AM」來訪問該值,那該怎麼辦? – multigoodverse 2013-03-22 23:48:18

+0

請參閱我的編輯,將元組移至值而不是密鑰。 – 2013-03-23 00:04:07

+0

@UneUne這就是爲什麼你被問到鑰匙 – wRAR 2013-03-23 00:10:18

1
a = {"8AM":{"breakfast":"banana"},"2PM":{"lunch":"fish"},"8PM":{"dinner":"soup"}} 

使用:

>>>a['8AM']['breakfast'] 
'banana' 

其他:

def r(_d,_target): 
    result = [] 
    for k, v in _d.items(): 
     if(k == _target): 
      if type(v) == type({}): 
       for x in v.keys(): 
        result.append(v[x]) 
      else: 
       result.append(v) 
     if type(v) == type({}): 
      r2 = r(v,_target) 
      if len(r2) > 0: 
       for l in r2: 
        result.append(l) 
    return result 

>>> r(a,"breakfast") 
['banana'] 
>>> r(a,"8AM") 
['banana'] 
>>> r(a,"dinner") 
['soup']