some_dict = {"firstname": "Albert", "nickname": "Albert", "surname": "Likins", "username": "Angel"}
我想返回我的dict的键,它们的值存在不止一次。
有人能告诉我怎么实现吗?
a_list = []
for k,v in some_dict.iteritems():
if v in some_dict.values() and v != some_dict.keys(k):
a_list.append(k)
我会先翻动键和值:
使用
collections.defaultdict(set)
可以更有效地执行此操作。对于您的字典,flipped
看起来像:此方法不需要外部库或
if
语句:首先,将字典翻转成一个反向multidict,将每个值映射到它映射到的所有键。像这样:
现在,您只需在multidict中查找值大于1的键。很简单:
除了multidict键是原始dict值。所以,这是每个重复值,不是所有匹配每个重复值的键。但是你知道什么是匹配每个重复值的键吗?
当然,这会给你一个集合列表。如果你想把它平展成一个列表或集合,那很简单。您可以使用
chain.from_iterable
、嵌套理解或任何其他常用技巧。例如:相关问题 更多 >
编程相关推荐