这是我的代码:
a=[{'x':'aaa','b':'bbbb'},{'x':'a!!!','b':'b!!!'},{'x':'2222','b':'dddd'},{'x':'ddwqd','b':'dwqd'}]
我希望得到每个'x'列表:
['aaa','a!!!','2222','ddwqd']
这是获得这个的最好方法,
使用map ??
感谢
答案 0 :(得分:6)
list comprehension可以获得你的x值
Python 2.7.0+ (r27:82500, Sep 15 2010, 18:04:55)
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> a=[{'x':'aaa','b':'bbbb'},{'x':'a!!!','b':'b!!!'},{'x':'2222','b':'dddd'},{'x':'ddwqd','b':'dwqd'}]
>>> x_values = [ dictionary['x'] for dictionary in a ]
>>> print x_values
['aaa', 'a!!!', '2222', 'ddwqd']
>>>
您有3个词典的列表,并且您正尝试使用键'x'获取每个词典的值。
可用于实现此目的的简单列表理解可以分解
[ dictionary['x'] for dictionary in a ]
[ <object> for <object> in <iterable> ]
| |
-This is what goes into the new list -Name object from iterable)
-You are allowed to process the
objects from the iterable before
they go into the new list
列表理解的作用类似于:
x_values = []
for dictionary in a:
x_values.append(dictionary['x'])
这是一篇关于列表理解效率的有趣博客文章
答案 1 :(得分:4)
列表理解:
[i['x'] for i in a]
答案 2 :(得分:1)
列表理解是这种事情的更惯用选择,但是如果你想使用map
,那么代码就是
result = map(lambda item: item["x"], a)
或
def get_x(item):
return item["x"]
result = map(get_x, a)