2012-07-07 27 views
1

可能重複:
iterating one key in a python multidimensional associative array迭代一個單個維度在python字典

我創建2種尺寸 myaddresses [ '約翰', '史密斯'] =字典「地址1「 myaddresses ['john','doe'] =」地址2「

我該如何迭代時尚中的一維

for key in myaddresses.keys('john'): 
+1

你真的沒有二維字典,你有一個一維的字符串鍵... ...所以它是不可能做你想要的,除非你跟蹤每個可能的後半部分前半部分添加了一個密鑰對。有一個二維字典是更好的。 – martineau 2012-07-07 21:17:39

回答

1

它遍歷所有的鍵,所以它可能不是最有效的方式,但我只是陳述的情況下,你忽略了它的明顯的方法:

for key in myaddresses.keys(): 
    if key[0] == 'john': 
     print myaddresses[key] 
+0

我解析一個文件並計數,總計,測試是否存在等。如果有一個語法來獲取帶有正則表達式的鍵(由於它可能是巨大的而沒有考慮整個鍵列表和解析),或者可能是一種不同的語法爲myhash ['apple']中的鍵創建散列(即。myhash ['apple'] ['green']) – user1187297 2012-07-07 20:47:27

2

嘗試:

{k[1]:v for k,v in myaddresses.iteritems() if k[0]=='john'} 
3

壞消息:你不能(至少不能直接)。你所做的不是一個「2維」字典,而是一個帶有元組(字符串對)的字典作爲關鍵字,並且只使用該關鍵字的哈希值(通常與哈希表一樣)。你想要什麼需要連續查找,即:

for key, val in my_dict.items(): 
    # no garantee we have string pair as key here 
    try: 
     firstname, lastname = key 
    except ValueError: 
     # not a pair... 
     continue 
    # this would require another try/except block since 
    # equality test on different types can raise anything 
    # but let's pretend it's ok :-/ 
    if firstname == "john": 
     do_something_with(key, val) 

不用說,它有點擊敗使用字典的整點。錯誤...那麼使用適當的關係數據庫呢?