python - 如何根据一年的首次出现来保留列表条目?
问题描述
我有一个列表列表:
我一直在尝试不同的循环和 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])
解决方案
您实际上并不需要检查变量。另外,我会使用一个单独的列表来收集输出,同时遍历您用作输入的列表:
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/