Python通过匹配值获取json数组项

时间:2017-08-23 23:45:44

标签: python python-3.x

所以我有一个json数据数组,如下所示:

[{
  "first_name": "Joe",
  "last_name": "Smith",
  "numbers": [1,2,3,4,5]
}, {
  "first_name": "Jane",
  "last_name": "Doe",
  "numbers": [6,4,1,35,2]
}, {
  "first_name": "Mike",
  "last_name": "Everyman",
  "numbers": [8,5,3,2,4,5]
}]

如何只选择last_name = Doe的数组项?我试图将我在ruby中编写的一些代码转换为python,因为lambda不支持ruby :( 我的ruby代码看起来像:

match = data.select {|x| x[:last_name] == 'Doe'}

返回:

{
 "first_name": "Jane",
 "last_name": "Doe",
 "numbers": [6,4,1,35,2]
}

此外,我知道在技术上不会在ruby中工作,因为数据是json形式,但我将它从散列转换为json并且不想改变它,因为基本思想仍然是相同的。

1 个答案:

答案 0 :(得分:5)

您可以使用生成器表达式,在其上调用next以提供第一个匹配项(如果有):

match = next(d for d in data if d['last_name'] == 'Doe')