0

从查询中我得到这些值:

[{'year': 2012L},
 {'year': 2013L},
 {'year': 2013L},
 {'year': 2013L}]

如果没有 for 循环,如何将所有year's值提取到数组中?

我需要得到一个像这样的列表:

[2012,2013,2013,2013] 
4

4 回答 4

4

使用列表理解

>>> lis = [{'year': 2012L}, {'year': 2013L}, {'year': 2013L}, {'year': 2013L}]
>>> [x['year'] for x in lis]
[2012L, 2013L, 2013L, 2013L]
于 2013-10-01T19:06:52.650 回答
4

您可以使用列表理解

>>> l = [{'year': 2012L},
...  {'year': 2013L},
...  {'year': 2013L},
...  {'year': 2013L}]  
>>> [item['year'] for item in l]
[2012L, 2013L, 2013L, 2013L]
于 2013-10-01T19:07:05.103 回答
2

假设

a=[{'year': 2012L},
{'year': 2013L},
{'year': 2013L},
{'year': 2013L}]

使用 while 循环和 pop()

   while(a):
      v=a.pop()
      print v['year']

有地图

def rv(x): return x['year']
list(map(rv,a))
[2012L, 2013L, 2013L, 2013L]
于 2013-10-01T19:17:47.303 回答
1

operator.itemgetter列表理解非常适合此。每次迭代也很容易扩展和获取多个项目(参见itemgetter文档)。

from operator import itemgetter

dicts = [{'year': 2012L},
         {'year': 2013L},
         {'year': 2013L},
         {'year': 2013L}]

extractor = itemgetter('year')
print [extractor(d) for d in dicts]  # [2012L, 2013L, 2013L, 2013L]
于 2013-10-01T19:31:17.777 回答