2013-08-20 107 views
2

我想獲得一個字典中已知鍵的值。很簡單,但這本詞典在詞典列表中,列表在詞典中。獲取詞典列表中的字典值

例如:

{u 'd1': 1, 'd2':2 , 'd3': [{'e1':'muh','e2':'mia' ...},{'e1':'wuff', 'e2':'kickeriki'...},...]} 

,我想在'd3'的關鍵'e2「的所有值。有沒有超快速的方式?編號*: 謝謝!

結果:

Blender: 8.82148742676e-06 
Oscar: 4.05311584473e-06 

我將採取列表比較。

回答

3

試試這個,應用列表解析:

d = { 'd1': 1, 
     'd2': 2 , 
     'd3': [{'e1':'muh','e2':'mia'}, {'e1':'wuff', 'e2':'kickeriki'}]} 

[inner['e2'] for inner in d['d3']] 
=> ['mia', 'kickeriki'] 
0

總部設在列表理解簡短的回答是:

[ d[k] for d in data['d3'] if k in d ] 

data是在你的例子中,數據結構和k關鍵你正在尋找對於。

此替代方案不假定k存在於所有從屬字典中。

測試與

data= {'d1': 1, 'd2':2 , 'd3': [{},{'e1':'muh','e2':'mia'},{},{'e1':'wuff', 'e2':'kickeriki'},{}]} 
k= 'e1' 

結果

['muh', 'wuff'] 

如果子句if k in d被消除,這導致異常作爲d[k]爲不包含k字典執行。

+0

這是行不通的。什麼是數據?和'k'? –

+0

他們**明顯**(對我來說:-))感謝您的評論。 –