2017-08-23 191 views
1

得到JSON數組項所以我有JSON數據的數組,看起來像這樣:Python中通過匹配值

[{ 
    "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] 
}] 

我怎麼可以只選擇數組項,其中姓氏= Doe的?我試圖將一些代碼,我在紅寶石寫的蟒蛇,因爲拉姆達不支持紅寶石:( 我的Ruby代碼看起來像:

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

將返回:

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

另外,我知道將不可能在技術上紅寶石工作,因爲數據是JSON形式,但我轉換它從一個哈希JSON和不喜歡它更改回導致基地的想法仍然是相同的。

+0

我試圖算出這個關這個問題,但過濾答案給我說,我無法弄清楚如何讓我的數據有些怪異的對象類型在......之外。具體做法是:'類型錯誤:「過濾器」對象不subscriptable' – cashman04

回答

2

您可以使用一個生成器表達式,在其上調用next供應若有第一個匹配項:

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

正是我需要的。簡單到如此地步!非常感謝。 – cashman04