我目前的数据格式为:
[ 1982, 1, 108108, 5568],
[ 1982, 2, 64488, 2433],
...,
[ 2007, 498, 4341, 395],
[ 2007, 499, 4328, 274],
[ 2007, 500, 4323, -118]]
我想将1982年的所有数据放入一个列表,将2007年的所有数据放入另一个列表中。
我该怎么做?
答案 0 :(得分:1)
尝试以下方法:
def accessYear(year, data):
return filter(lambda i: i[0] == year, data)
答案 1 :(得分:1)
您可以使用defaultdict
字典存储数据,以年份为键,数据为值:
from collections import defaultdict
l = [[1982, 1, 108108, 5568],
[1982, 2, 64488, 2433],
[2007, 498, 4341, 395],
[2007, 499, 4328, 274],
[2007, 500, 4323, -118]]
# create a dict of lists
data = defaultdict(list)
# go over each sublist in l
for lst in l:
# the key is the first element in each list
year = lst[0]
# add the rest of the list to the value of the key
data[year] += lst[1:]
>>> print(dict(data))
{1982: [1, 108108, 5568, 2, 64488, 2433], 2007: [498, 4341, 395, 499, 4328, 274, 500, 4323, -118]}
>>> print(data[1982])
[1, 108108, 5568, 2, 64488, 2433]
>>> print(data[2007])
[498, 4341, 395, 499, 4328, 274, 500, 4323, -118]
# here is where you can extract your two lists
>>> print(list(data.values()))
[[1, 108108, 5568, 2, 64488, 2433], [498, 4341, 395, 499, 4328, 274, 500, 4323, -118]]
这样做的好处是您可以存储多年。
答案 2 :(得分:0)
>>> l = [[1982, 1, 108108, 5568], [ 1982, 2, 64488, 2433], [ 2007, 498, 4341, 395], [ 2007, 499, 4328, 274], [ 2007, 500, 4323, -118]]
>>>
>>> result = [[], []]
>>> for sub in l:
... result[sub[0] == 2007].extend(sub[1:])
...
>>> result
[[1, 108108, 5568, 2, 64488, 2433], [498, 4341, 395, 499, 4328, 274, 500, 4323, -118]]
第一个result
列表包含1982年的值,第二个列表包含2007年的值。解决方案假设您没有其他年份。
答案 3 :(得分:0)
如果你只有两个元素1982& 2007年你可以试试下面的功能, 或者你可以在elif案例中添加你的条件:
def ListBreak(alist):
flist,slist =[],[]
for each in alist:
if each[0] == 1982:
flist.append(each)
else:
slist.append(each)
return flist,slist
此函数将返回两个列表,您可以使用以下命令解压缩:
f,s = ListBreak(yourList)
希望这会有所帮助:)