0

我有这样的事情:

color_names = ('red', 'blue', 'orange', 'red')

从上面的列表中,我想做这样的事情:

colors = [(0, 'red'), (1, 'blue'), (2, 'orange')]

每种颜色都应该是唯一的,这就是为什么我必须忽略第一个列表中的第二个“红色”。我目前的解决方案有很多循环和条件。我正在寻找更好的解决方案。

4

3 回答 3

6

既然您说顺序无关紧要,您可以简单地执行以下操作:

list(enumerate(set(color_names)))
于 2013-03-11T14:32:29.290 回答
3

如果顺序无关紧要:

color_names = ('red', 'blue', 'orange', 'red')
colors = [(i, color) for i, color in enumerate(set(color_names))]

或者:

colors = list(enumerate(set(color_names)))

set()使列表包含唯一元素。

于 2013-03-11T14:34:22.567 回答
0

太罗嗦,但它的工作原理:

color_names = ('red', 'blue', 'orange', 'red')
i = 0
res = []
for item in set(color_names):
    res.append((i,item))
    i+=1

print res
于 2013-03-11T14:40:54.307 回答