首页 > 解决方案 > 标记重复列表中的元素

问题描述

有什么好的方法可以做到这一点:

    input  = ['hi you', 'hello', 'hi you', 'hello', 'good bye']
    output = [1, 2, 1, 2, 3] 

非常感谢!!

(我刚刚编辑了输入列表。我的案例实际上不是字母列表,而是新列表)

标签: pythonlist

解决方案


最省时的方法是构建从值到第一个遇到的索引的映射:

>>> data = ['a', 'b', 'a', 'b', 'c']
>>> index = {}
>>> for x in data:
...     if x not in index:
...         index[x] = len(index) + 1
...
>>> index
{'a': 1, 'b': 2, 'c': 3}

然后简单地映射原始数据:

>>> [index[x] for x in data]
[1, 2, 1, 2, 3]

推荐阅读