【问题标题】:How to find a key's value from a list of dictionaries?从字典列表python中查找键的值
【发布时间】:2014-03-14 01:00:15
【问题描述】:

如何从字典列表中获取给定键的值?

mylist= [
    {
      'powerpoint_color': 'blue',
      'client_name': 'Sport Parents (Regrouped)'
    },
    {
      'sort_order': 'ascending',
      'chart_layout': '1',
      'chart_type': 'bar'
    }
]

“mylist”中的字典数量未知,我想找到键“sort_order”所附的值。

我的失败尝试:

for key in mylist:
    for value in key:
        print key['sort_order']

谢谢

【问题讨论】:

  • @Chris Adams - 感谢您清理我的清单。

标签: python list dictionary find


【解决方案1】:
mylist= [{'powerpoint_color': 'blue', 'client_name': 'Sport Parents (Regrouped)'}, {'sort_order': 'ascending', 'chart_layout': '1', 'chart_type': 'bar'}]

print [d["sort_order"] for d in mylist if "sort_order" in d][0]

结果:

ascending

您还可以将所有字典组合成一个字典,然后访问它:

combined_d = {key: value for d in mylist for key,value in d.iteritems() }
print combined_d["sort_order"]

【讨论】:

    【解决方案2】:

    您可以使用以下代码获取它:

    for d in mylist:
        if 'sort_order' in d:
            print(d['sort_order'])
    

    首先遍历列表,检查每个字典是否需要键以及是否获得值。

    【讨论】:

    • 感谢您的解释。我现在可以看到我哪里出错了。我将使用列表理解方法,但要给它一个赞成票!
    【解决方案3】:

    类似的东西?

    for hash in mylist:
        if "sort_order" in hash: print hash ["sort_order"]
    

    【讨论】:

      【解决方案4】:

      虽然不那么可读,但这个版本:

      • 提供短路功能
      • 避免双重查找

      print reduce( lambda a,b: a or b, (l.get("sort_order") for l in mylist) )
      

      请注意,如果您的某些键被评估为假,这将失败,但开发一个不从这个起点开始的版本并不难

      【讨论】:

        猜你喜欢
        • 2011-12-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-07
        • 1970-01-01
        • 1970-01-01
        • 2021-02-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多