对相同的值只迭代一次 for 循环
Iterating for loop only once for same values
我有这个:
names = {"Micky": "Mouse", "Goofy": "Black", "Pit": "Black", "Donald": "Trump"}
我想用 for 循环遍历这个字典,但只为 "Black"
遍历一次。
类似于以下内容:
for value in names.iter_only_once_values():
print value
Output: "Mouse" , "Black" , "Trump"
这可能吗?如何实现?
你可以这样做:
for value in set(names.values()):
print value
使用集将删除所有重复项。上面的输出是:
Mouse
Black
Trump
或者,您可以像这样使用 https://docs.python.org/2/library/itertools.html 中的 unique_everseen
食谱:
for value in unique_everseen(names.itervalues()):
print value
你可以试试这个:
for key in {k: v for v, k in names.iteritems()}:
print(key)
这将颠倒你的字典设置,值作为键,键作为值。所以你会得到想要的输出:
Mouse
Black
Trump
另一种方法:
for name in dict.fromkeys(names.values()).keys():
print name
输出:
Mouse
Black
Trump
当您需要使用 OrderedDict
而不是 dict
时,此方法很有用,例如:
from collections import OrderedDict
# dictionary names is sorted by values
ordered_names = OrderedDict(sorted(names.items(), key=lambda t: t[1]))
# dictionary names is printed in desired order
for name in OrderedDict.fromkeys(ordered_names.values()).keys():
print name
输出:
Black
Mouse
Trump
我有这个:
names = {"Micky": "Mouse", "Goofy": "Black", "Pit": "Black", "Donald": "Trump"}
我想用 for 循环遍历这个字典,但只为 "Black"
遍历一次。
类似于以下内容:
for value in names.iter_only_once_values():
print value
Output: "Mouse" , "Black" , "Trump"
这可能吗?如何实现?
你可以这样做:
for value in set(names.values()):
print value
使用集将删除所有重复项。上面的输出是:
Mouse
Black
Trump
或者,您可以像这样使用 https://docs.python.org/2/library/itertools.html 中的 unique_everseen
食谱:
for value in unique_everseen(names.itervalues()):
print value
你可以试试这个:
for key in {k: v for v, k in names.iteritems()}:
print(key)
这将颠倒你的字典设置,值作为键,键作为值。所以你会得到想要的输出:
Mouse
Black
Trump
另一种方法:
for name in dict.fromkeys(names.values()).keys():
print name
输出:
Mouse
Black
Trump
当您需要使用 OrderedDict
而不是 dict
时,此方法很有用,例如:
from collections import OrderedDict
# dictionary names is sorted by values
ordered_names = OrderedDict(sorted(names.items(), key=lambda t: t[1]))
# dictionary names is printed in desired order
for name in OrderedDict.fromkeys(ordered_names.values()).keys():
print name
输出:
Black
Mouse
Trump