如何将列表分成两个不同的列表?(Python2.7)

时间:2017-12-04 07:56:00

标签: python python-2.7 list

我目前的数据格式为:

[  1982,      1, 108108,   5568],
[  1982,      2,  64488,   2433],
..., 
[  2007,    498,   4341,    395],
[  2007,    499,   4328,    274],
[  2007,    500,   4323,   -118]]

我想将1982年的所有数据放入一个列表,将2007年的所有数据放入另一个列表中。

我该怎么做?

4 个答案:

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

希望这会有所帮助:)