使用Python编程语言,我编写了一个程序,为列表中的重复项提供相同的ID,但不幸的是我遇到了问题
例如,在下面的示例中,索引 5 输出应该是 [3, 'C'],但它给出了 [4, 'C'] 。 请注意,该列表是动态的,这只是一个示例
my_list = [['A'], ['B'], ['B'], ['C'], ['A'], ['C'] , ['A']]
id_list = []
id_node_list = []
counter = 0
for item in my_list:
if item in id_list:
id = id_list.index(item) + 1
else:
counter += 1
id = counter
id_list.append(item)
id_node_list.append([id, item[0]])
print(id_node_list)
输出为:
[[1, 'A'], [2, 'B'], [2, 'B'], [3, 'C'], [1, 'A'], [4, 'C'], [1, 'A']]
不要使用列表来存储此类信息,这会使搜索效率低下。
你应该使用字典:
mapper = {}
id_node_list = []
for item in my_list:
id_node_list.append([mapper.setdefault(item[0], len(mapper)+1)]+item)
print(id_node_list)
输出:
[[1, 'A'], [2, 'B'], [2, 'B'], [3, 'C'], [1, 'A'], [3, 'C'], [1, 'A']]
循环结束时mapper
:
{'A': 1, 'B': 2, 'C': 3}