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]