【问题标题】:Get value of dictionary in a list in a dictionary获取字典列表中字典的值
【发布时间】:2013-08-22 17:56:45
【问题描述】:

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

示例:

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

我想在'd3' 中获取键'e2' 的所有值。有没有超快的方法?

编辑*: 谢谢!

结果:

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

我将参加列表比赛。

【问题讨论】:

    标签: python list search dictionary


    【解决方案1】:

    基于列表推导的简短答案是:

    [ 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 的字典执行。

    【讨论】:

    • 他们是显而易见的(对我来说:-))感谢您的评论。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      • 1970-01-01
      • 2020-04-18
      • 2011-11-08
      • 1970-01-01
      相关资源
      最近更新 更多