2015-04-22 92 views
0

這是我的字典如何在給定值時在Python中的字典中獲取密鑰?

finance={ 
'sno' : 'None', 
'fin_ticker' : 'what', 
'marketcap' : ['what','how much'], 
'e_value' : ['what', 'how much'], 
'ret_on_assets' : ['how much', 'what'], 
'tot_cash' : 'what', 
'op_cash' :'what', 
'lev_free_cf' :'what', 
'tot_debt' : 'what', 
'curr_ratio' : ['what', 'how much'], 
'gross_profit' :['what', 'how much'], 
'prof_margin' :['what', 'how much'], 
'last_trade' : ['what', 'how much'], 
'trade_time' : ['what', 'when'], 
'prev_close' : ['what', 'how much'], 
} 

我需要得到密鑰的value..for實例給出當我給一個值作爲「什麼」它會顯示關於該值,如下所示

fin_ticker 
marketcap 
e_value 
ret_on_assets 
tot_cash 
op_cash 
lev_free_cf 
tot_debt 
curr_ratio 
gross_profit etc... 
所有鍵

回答

1

您可以使用函數返回一個發電機包含預期的鍵:

def key_finder(d,val): 
    for key in d : 
     value=finance[key] 
     if value==val: 
     yield key 
     elif isinstance(value,list) and val in value: 
     yield key 

演示:

>>> list(key_finder(finance,'what')) 
['op_cash', 'prev_close', 'curr_ratio', 'lev_free_cf', 'last_trade', 'marketcap', 'tot_cash', 'ret_on_assets', 'gross_profit', 'trade_time', 'prof_margin', 'fin_ticker', 'e_value', 'tot_debt'] 
>>> list(key_finder(finance,'how much')) 
['prev_close', 'curr_ratio', 'last_trade', 'marketcap', 'ret_on_assets', 'gross_profit', 'prof_margin', 'e_value'] 
+0

謝謝@Kasra其工作 – Murali

+0

@Murali不客氣;) – Kasramvd

0

你應該鍵遍歷與

for key in finance.keys(): 
    if (finance[key] == value) 
     print "key: %s , value: %s" % (key, finance[key]) 
    elif isinstance(finance[key],list) and value in finance[key]: 
     print "key: %s , value: %s" % (key, finance[key]) 
+0

但這並沒有給整個值 – Murali

+0

thanq..I得到它現在 – Murali

相關問題