从查询中我得到这些值:
[{'year': 2012L},
{'year': 2013L},
{'year': 2013L},
{'year': 2013L}]
如果没有for循环,如何将所有year's
值提取到数组中?
我需要获得一个列表:
[2012,2013,2013,2013]
答案 0 :(得分:4)
>>> lis = [{'year': 2012L}, {'year': 2013L}, {'year': 2013L}, {'year': 2013L}]
>>> [x['year'] for x in lis]
[2012L, 2013L, 2013L, 2013L]
答案 1 :(得分:4)
您可以使用list comprehension:
>>> l = [{'year': 2012L},
... {'year': 2013L},
... {'year': 2013L},
... {'year': 2013L}]
>>> [item['year'] for item in l]
[2012L, 2013L, 2013L, 2013L]
答案 2 :(得分: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']
map(rv,a)
[2012L, 2013L, 2013L, 2013L]
答案 3 :(得分:1)
operator.itemgetter
和list comprehension非常适合这种情况。每次迭代也可以轻松扩展和获取多个项目(请参阅itemgetter
doc)。
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]