首页 > 解决方案 > 如何根据一年的首次出现来保留列表条目?

问题描述

我有一个列表列表:

在此处输入图像描述

我一直在尝试不同的循环和 for 语句,但似乎无法让它工作。我想做的是根据今年的首次出现来保留条目。例如,list[0]有 1966 年(其中list[0][1]1966 年)。这意味着它将保留,但list[4]会被删除,因为list[4][1]也是在 1966 年。有什么想法吗?

我尝试过的一个例子:

check = -1
yearlist = []
for i in list:
    check = check+1
    if list[check][1] in yearlist:
        list.remove(list[check])
    yearlist.append(list[check][1])

标签: pythonpandas

解决方案


您实际上并不需要检查变量。另外,我会使用一个单独的列表来收集输出,同时遍历您用作输入的列表:

yearlist = []
output_list = []

for item in input_list:
    if item[1] not in yearlist:
        yearlist.append(item[1])
        output_list.append(item)

input_list = output_list

下次提供您正在使用的数据(不仅仅是屏幕截图)会很有帮助,这样人们就可以轻松地复制它。

我已将其用作虚拟数据:

input_list = [
        ["foo1", "1966", "bar1", "ham1"],
        ["foo1", "1956", "bar1", "ham1"],
        ["foo2", "1966", "bar2", "ham2"],
        ["foo2", "1956", "bar2", "ham2"],
        ["foo1", "1986", "bar1", "ham1"],
        ["foo2", "1986", "bar2", "ham2"],
        ["foo1", "1996", "bar1", "ham1"]
        ]

它产生以下输出:

[['foo1', '1966', 'bar1', 'ham1'], ['foo1', '1956', 'bar1', 'ham1'], ['foo1', '1986', 'bar1', 'ham1'], ['foo1', '1996', 'bar1', 'ham1']]

此外,我建议将与数据科学或机器学习无关的纯编码相关问题发布到https://stackoverflow.com/


推荐阅读