使用相同的 ID 来重复 Python 列表中的项目

问题描述 投票:0回答:1

使用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']]

enter image description here

python list machine-learning deep-learning
1个回答
0
投票

不要使用列表来存储此类信息,这会使搜索效率低下。

你应该使用字典:

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}
© www.soinside.com 2019 - 2024. All rights reserved.