2012-09-04 50 views
0

我有一本字典的元素,匹配/搜索字典中的鍵列表

dct = {'slab1': {'name':'myn1', 'age':20}, 'slab2':{'name':'myn2','age':200}} 
lst = {'/store/dir1/dir_slab1/tindy', '/store/dir2/dirslab2_fine/tunka','/store/dir1/dirslab3/lunku'} 

我如何搜索「slab1」,「slab2」,這是列表中的元素字典的鑰匙?如果匹配,我想打印匹配的元素和字典中的「年齡」。所以,在上面的例子中,我應該得到的東西,如:

'/store/dir1/dir_slab1/tindy', 20 
    '/store/dir2/dirslab2_fine/tunka', 200 

感謝您的任何建議

+5

你的第二個名爲'list'的變量實際上是一個'set'。 (另外,名稱變量'list','dict'等不是一個好主意)。 – mgilson

+1

你不應該使用字典和列表作爲變量名稱。 – arshajii

回答

0
>>> dct = {'slab1': {'name':'myn1', 'age':20}, 'slab2':{'name':'myn2','age':200}} 
>>> lst = {'/store/dir1/dir_slab1/tindy', '/store/dir2/dirslab2_fine/tunka','/store/dir1/dirslab3/lunku'} 
>>> for item in lst: 
... for pattern in dct: 
...  if pattern in item: 
...   print "%s, %s" % (item, dct[pattern]["age"]) 
... 
/store/dir1/dir_slab1/tindy, 20 
/store/dir2/dirslab2_fine/tunka, 200 

您也可以使用列表解析符號來獲得對:

>>> [(item, dct[pattern]["age"]) for item in lst for pattern in dct if pattern in item] 
[('/store/dir1/dir_slab1/tindy', 20), ('/store/dir2/dirslab2_fine/tunka', 200)] 

附:您的問題存在一些誤解(例如,list變量不是列表),但解決方案應該如下所示。

+0

謝謝。這工作得很好。這些詞典和列表僅用於舉例。對不起,這樣說。我會編輯它們... – iamauser