[英]How to make all the dictionary values unique in python?
我想要一个解决方案,使字典的所有键都具有唯一的值,并为此尽可能删除最小的值以使每个值都是唯一的。 例如:
my_dict = {'c': 3, 'e': 3, 'a': 2, 'f': 2, 'd': 2}
对于上面的字典,我需要从 'f' 中提取 2 次,从 'e' 中提取 3 次,从 'd' 中提取 1 次。 结果将是 6 这意味着{'c':3, 'a':2, 'd':1}
。 删除密钥不是问题。
请注意,我们可以删除 'c' 而不是 'e' 或 'a' 而不是 f'' 应该颁布或删除哪个键并不重要,重要的是具有唯一值
这是我尝试过的:
for k, v in my_dict.items():
c = 0
while len(my_dict.values()) > len(set(my_dict.values())):
my_dict[k] = my_dict[k] -1
c += 1
这不是您期望的结果,但它符合要求。
my_dict = {'c': 3, 'e': 3, 'a': 2, 'f': 2, 'd': 2}
to_remove = []
result = {}
for key, value in my_dict.items():
while value > 0:
if value not in to_remove:
to_remove.append(value)
result[key] = value
break
else:
value -= 1
result
简单的方法:
my_dict = {'c': 3, 'e': 3, 'a': 2, 'f': 2, 'd': 2}
rd = {v: k for k, v in my_dict.items()}
my_dict = {v: k for k, v in rd.items()}
print(my_dict)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.