2016-09-26 65 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