我想为每个元素添加一个id,如果元素出现多次,应该在第一次出现时加上id,我不知道这个问题,谁能帮我
输入:
omg = ['a', 'b', 'c', 'a', 'b', 1]
输出:
omg_id = [0, 1, 2, 0, 1, 3]
最佳答案
使用 defaultdict
按出现顺序获取 ids 的小棘手解决方案:
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]
默认工厂将当前已知 key 的数量分配给每个新 key 。由于key access不仅返回而且赋值,因此
defaultdict
在理解过程中“增长”。关于python为列表中的每个元素添加一个id,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51464020/