可能重複:
iterating one key in a python multidimensional associative array迭代一個單個維度在python字典
我創建2種尺寸 myaddresses [ '約翰', '史密斯'] =字典「地址1「 myaddresses ['john','doe'] =」地址2「
我該如何迭代時尚中的一維
for key in myaddresses.keys('john'):
可能重複:
iterating one key in a python multidimensional associative array迭代一個單個維度在python字典
我創建2種尺寸 myaddresses [ '約翰', '史密斯'] =字典「地址1「 myaddresses ['john','doe'] =」地址2「
我該如何迭代時尚中的一維
for key in myaddresses.keys('john'):
它遍歷所有的鍵,所以它可能不是最有效的方式,但我只是陳述的情況下,你忽略了它的明顯的方法:
for key in myaddresses.keys():
if key[0] == 'john':
print myaddresses[key]
我解析一個文件並計數,總計,測試是否存在等。如果有一個語法來獲取帶有正則表達式的鍵(由於它可能是巨大的而沒有考慮整個鍵列表和解析),或者可能是一種不同的語法爲myhash ['apple']中的鍵創建散列(即。myhash ['apple'] ['green']) – user1187297 2012-07-07 20:47:27
嘗試:
{k[1]:v for k,v in myaddresses.iteritems() if k[0]=='john'}
壞消息:你不能(至少不能直接)。你所做的不是一個「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)
不用說,它有點擊敗使用字典的整點。錯誤...那麼使用適當的關係數據庫呢?
你真的沒有二維字典,你有一個一維的字符串鍵... ...所以它是不可能做你想要的,除非你跟蹤每個可能的後半部分前半部分添加了一個密鑰對。有一個二維字典是更好的。 – martineau 2012-07-07 21:17:39