我想为每个元素添加一个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/

10-12 18:04