如何在字典列表中查找键的值?

7

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

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 - 感谢您清理我的列表。 - Boosted_d16
4个回答

11
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"]

3
您可以使用以下代码获取它:
for d in mylist:
    if 'sort_order' in d:
        print(d['sort_order'])

首先,您需要遍历列表,对于每个字典,检查它是否有所需的键,如果有,则获取该值。


谢谢你的解释。我现在知道我哪里错了。我会使用列表推导式的方法,但是我会给这个点赞! - Boosted_d16

0

像这样吗?

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

0

虽然不太易读,但这个版本:

  • 提供了短路计算
  • 避免了双重查找

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

请注意,如果您的一些键计算为false,此方法将失败,但从这个起点开始开发一个不会失败的版本并不难。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接