很抱歉这个noob问题,但我刚刚开始使用Python。
我有一个很长的195个不同整数的列表,但是它们的范围是0到2399.例如,数字90出现在mange时间,而数字7根本没有出现。
list = [90, 110, 113, 88, 90, 110, 90, 1370, 90]
我想'标记'这个,或者把它变成一个从0到195的整数列表,同时保持不同值的唯一ID。 基本上,我想要这个输出:
new_list = [1, 2, 3, 4, 1, 2, 1, 5, 1]
目标是能够有效地迭代列表。
答案 0 :(得分:4)
d={}
new_list = [d[i] for i in values if d.setdefault(i,len(d)+1)]
答案 1 :(得分:0)
作为@ 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]