使用python获得正确的东西的最好方法

时间:2011-03-05 06:25:41

标签: python list

这是我的代码:

a=[{'x':'aaa','b':'bbbb'},{'x':'a!!!','b':'b!!!'},{'x':'2222','b':'dddd'},{'x':'ddwqd','b':'dwqd'}]

我希望得到每个'x'列表:

['aaa','a!!!','2222','ddwqd']

这是获得这个的最好方法,

使用map ??

感谢

3 个答案:

答案 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'])

这是一篇关于列表理解效率的有趣博客文章

list comprehension efficiency

答案 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)