0

クエリからこれらの値を取得しています:

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

year'sfor ループがなければ、すべての値を配列に抽出するにはどうすればよいですか?

次のようなリストを取得する必要があります。

[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 に答える