2016-09-26 67 views
0

給定一個特定領域的列表:Python化的方式對象的列表映射到

[{'a': '30152', 'b': 'test1', 'c': '10'}, {'a': '30153', 'b': 'test2', 'c': '6'}] 

什麼會我在Python做的,以獲得滿意的結果

['test1', 'test2'] 

在Java 8我將執行以下操作:

list.stream().map(Row::getB).collect(Collectors.toList()); 
+2

'map(operator.itemgetter('b'),list)'? '[item ['b'] for list in list]'?儘管無論是哪種方式,「list」對於您自己的列表來說都是一個糟糕的名字,因爲它會隱藏內置類型。 – jonrsharpe

+0

嗨,是的,謝謝你。我只是使用'list'這個詞來表達一個例子的好處,但是謝謝我沒有意識到這一點。 這是一個整體命令的方式還是2個單獨的? –

+0

爲什麼不試試看! – jonrsharpe

回答

2

一種方法是創建一個映射函數,您將在元組/列表中的每個元素上運行dictionarie s 然後,您可以使用您創建的地圖功能和詞典列表調用函數圖。

def mapB(dict): return dict['b'] 
myDicts = {'a': '30152', 'b': 'test1', 'c': '10'}, {'a': '30153', 'b': 'test2', 'c': '6'} 
list = map(mapB,myDicts) 

如果您想更多dynamicaly創建它,那麼你可以使用一些地圖功能,贊一個。

myDicts = {'a': '30152', 'b': 'test1', 'c': '10'}, {'a': '30153', 'b': 'test2', 'c': '6'} 
list = map(lambda x: x['b'], dict) 
+1

請注意,您的'mapB'已經由Python以更通用的形式'operator.itemgetter'提供。 – jonrsharpe