2014-05-15 78 views
3

我需要一個適當的解決方案來搜索Python中嵌套數據結構中的鍵。 讓我們假設我有值「檢查」變量和字典是這樣的:Python按值搜索

SERVICES = { 
    'domain': ['check','whois','register'], 
    'user': ['create','show','delete'], 
    'invoice': ['toPdf','print'] 
} 

什麼是檢查在陣列關鍵是「檢查」的價值和回報「域」的最佳方式?

回答

3

標準的做法:

for k, v in SERVICES.items(): # or iteritems in Python 2 
    if 'check' in v: 
     print(k) # 'domain' 
     break 

如果你希望有多個密鑰匹配的情況下,只是刪除break

功能的方法:

>>> next(filter(lambda x: 'check' in SERVICES[x], SERVICES)) 
'domain' 
3

在字典鍵只需迭代,並檢查是否是check對應於密鑰的值的值中的一個。如果你發現它,然後給它撥打next電話。

print next(key for key in SERVICES if 'check' in SERVICES[key]) 
# domain 
2
SERVICES = { 
    'domain': ['check','whois','register'], 
    'user': ['create','show','delete'], 
    'invoice': ['toPdf','print'] 
} 

print [k for k in SERVICES if 'check' in SERVICES[k]]