首页 > 解决方案 > 如何使所有字典值在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

标签: pythondictionary

解决方案


这不是您期望的结果,但它符合要求。

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

推荐阅读