python 中的整数标记列表

Tokenise list of integers in python

抱歉这个菜鸟问题,但我才刚刚开始 Python。

我有一个很长的列表,包含 195 个不同的整数,但它们的范围从 0 到 2399。例如,数字 90 出现了 mange 次,而数字 7 根本没有出现。

list = [90, 110, 113, 88, 90, 110, 90, 1370, 90]

我想'tokenise'这个,或者把它变成一个范围从0到195的整数列表,同时保持不同值的唯一ID。 基本上,我想要这个输出:

new_list = [1, 2, 3, 4, 1, 2, 1, 5, 1]

目标是能够高效地迭代列表。

作为@cricket_007,我质疑你的申请。迭代不随数字的大小而变化。但是,如果您有理由需要一组密集的 ID,那么这是一个可能的解决方案。我让构建循环变得简单,让您了解它是如何工作的;您可以进行一些 Pythonic 改进,例如使用字典 get 方法。

构建字典以将旧 ID 转换为新 ID。 然后一口气做翻译

my_list = [90, 110, 113, 88, 90, 110, 90, 1370, 90]

new_id_dict = {}
new_id = 0

for id in my_list:
    if id not in new_id_dict:
        new_id += 1
        new_id_dict[id] = new_id

new_list = [new_id_dict[id] for id in my_list]
print new_list

输出:

[1, 2, 3, 4, 1, 2, 1, 5, 1]
d={}
new_list = [d[i] for i in values if d.setdefault(i,len(d)+1)]