如果你打印dict.values()
,你会得到:
[[2, 'green', 'blue'], [3, 'green', 'yellow', 'black']]
因此,当您尝试对其进行切片时,您会得到:
[[3, 'green', 'yellow', 'black']]
因此,您想要切片colors
而不是dict.values()
:
for colors in t.values():
colors = colors[1:]
现在还有一个问题。您正在检查列表是否已在列表中看到,而不是每个项目。所以你必须再次循环。
for colors in t.values():
colors = colors[1:]
for color in colors:
请注意,这可能会导致您的脚本没有如此出色的性能,因此您可能会执行以下操作:
>>> from itertools import chain
>>> [i[1:] for i in t.values()]
[['green', 'blue'], ['green', 'yellow', 'black']]
>>> list(chain.from_iterable(i[1:] for i in t.values()))
['green', 'blue', 'green', 'yellow', 'black']
因此,集成到您的代码中:
new = set() # Better for performance to use sets
for color in chain.from_iterable(i[1:] for i in t.values()):
if color not in new:
new.add(color)
print new
印刷:
set(['blue', 'black', 'green', 'yellow']) # If you need order, use a list instead.
顺便说一句,不要命名字典dict
。它覆盖了内置类型。