对于相同的值,仅迭代一次循环

Kos*_*ris 2 python dictionary set python-2.7

我有这个:

names = {"Micky": "Mouse", "Goofy": "Black", "Pit": "Black", "Donald": "Trump"}
Run Code Online (Sandbox Code Playgroud)

我想用for循环迭代这个字典但只有一次"Black".类似于以下内容:

for value in names.iter_only_once_values():
    print value

Output: "Mouse" , "Black" , "Trump"
Run Code Online (Sandbox Code Playgroud)

这可能吗?怎么样?

Jun*_*sor 5

你可以这样做:

for value in set(names.values()):
    print value
Run Code Online (Sandbox Code Playgroud)

使用集合将删除任何重复项.上面的输出是:

Mouse
Black
Trump
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用https://docs.python.org/2/library/itertools.html中的unique_everseen配方,如下所示:

for value in unique_everseen(names.itervalues()):
     print value
Run Code Online (Sandbox Code Playgroud)