📜  Python|为列表中的唯一编号赋值

📅  最后修改于: 2022-05-13 01:55:51.336000             🧑  作者: Mango

Python|为列表中的唯一编号赋值

我们可以为列表中的所有数字分配一个唯一值,在重复时它会保留保留给它的值。这是在使用 id 时在 Web 开发中面临的一个非常常见的问题。让我们讨论一些可以解决这个问题的方法。

方法 #1:使用enumerate() + 列表理解
列表推导可以与 enumerate函数一起用于执行此特定任务,该函数在列表中的迭代中借助 set 和前帮助选择唯一数字。

# Python3 code to demonstrate
# assign unique value to list elements
# using list comprehension + enumerate
  
# initializing list
test_list = [1, 4, 6, 1, 4, 5, 6]
  
# printing the original list
print ("The original list is : " + str(test_list))
  
# using list comprehension + enumerate
# assign unique value to list elements 
temp = {i: j for j, i in enumerate(set(test_list))}
res = [temp[i] for i in test_list]
  
# printing result
print ("The unique value list is : " + str(res))
输出:
The original list is : [1, 4, 6, 1, 4, 5, 6]
The unique value list is : [0, 1, 3, 0, 1, 2, 3]


方法 #2:使用setdefault() + map() + count()
所有这三个函数的组合也可用于执行此特定任务。 Map 绑定了所有类似的元素,setdefault 为它们分配唯一的编号,count函数帮助 map 找到总出现次数。

# Python3 code to demonstrate
# assign unique value to list elements
# using setdefault() + map() + count()
from itertools import count
  
# initializing list
test_list = [1, 4, 6, 1, 4, 5, 6]
  
# printing the original list
print ("The original list is : " + str(test_list))
  
# using setdefault() + map() + count()
# assign unique value to list elements 
res = list(map({}.setdefault, test_list, count()))
  
# printing result
print ("The unique value list is : " + str(res))
输出:
The original list is : [1, 4, 6, 1, 4, 5, 6]
The unique value list is : [0, 1, 2, 0, 1, 5, 2]