检查一个值是否是列表的第一次出现并在 Python 中标记为 1

Ban*_*ang 3 python list python-3.x

我有一个列表,我想将每个元素的第一次出现标记为 1,将其他出现标记为 0。我该怎么做?

初始输入:

my_lst = ['a', 'b', 'c', 'c', 'a', 'd']
Run Code Online (Sandbox Code Playgroud)

预期产出:

[1,1,1,0,0,1]
Run Code Online (Sandbox Code Playgroud)

And*_*ely 8

您可以使用itertools.countcollections.defaultdict来完成任务:

from itertools import count
from collections import defaultdict

my_lst = ['a', 'b', 'c', 'c', 'a', 'd']

d = defaultdict(count)
out = [int(next(d[v])==0) for v in my_lst]
print(out)
Run Code Online (Sandbox Code Playgroud)

印刷:

[1, 1, 1, 0, 0, 1]
Run Code Online (Sandbox Code Playgroud)