Как сделать все значения словаря уникальными в python? - PullRequest
0 голосов
/ 16 марта 2020

Я хочу, чтобы решение сделало так, чтобы все ключи словаря имели уникальное значение, и чтобы при этом удалялись значения как можно меньше, чтобы каждое значение было уникальным. Например:

my_dict = {'c': 3, 'e': 3, 'a': 2, 'f': 2, 'd': 2}

для вышеупомянутого словаря мне нужно сабвуфер 2 от 'f' и 3 раза от 'e' и 1 раз от 'd'. и результат будет 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

Ответы [ 2 ]

0 голосов
/ 16 марта 2020

Простой подход:

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)
0 голосов
/ 16 марта 2020

Это не тот результат, которого вы ожидали, но он соответствует требованиям.

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
...