2

我想获取字典中已知键的值。很简单,但是这本字典在字典列表中,并且列表在字典中。

例子:

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

我想获得所有关键值'e2' in 'd3'。有没有超快的方法?

编辑*:谢谢!

结果:

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

我将采取列表比较。

4

2 回答 2

3

试试这个,使用列表推导:

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

[inner['e2'] for inner in d['d3']]
=> ['mia', 'kickeriki']
于 2013-08-20T15:37:19.660 回答
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 子句if k in d被消除,这会导致异常,因为d[k]它对不包含k.

于 2013-08-20T15:39:58.777 回答