我想为每个元素添加一个id,如果元素多次出现,它应该在第一次出现时添加id,我不知道这个问题,任何人都可以帮助我
输入:
omg = ['a', 'b', 'c', 'a', 'b', 1]
Run Code Online (Sandbox Code Playgroud)
输出:
omg_id = [0, 1, 2, 0, 1, 3]
Run Code Online (Sandbox Code Playgroud)
使用a defaultdict:按发生顺序获取id的小巧棘手的解决方案
from collections import defaultdict
omg = ['a', 'b', 'c', 'a', 'b', 1]
d = defaultdict(lambda: len(d)) # late binding allows d not to be defined yet
omg_id = [d[x] for x in omg]
# [0, 1, 2, 0, 1, 3]
Run Code Online (Sandbox Code Playgroud)
默认工厂为每个新密钥分配当前已知密钥的数量.由于密钥访问不仅返回而且还分配值,因此defaultdict在理解期间"增长".