Удалить все значения из словаря, которые встречаются более одного раза - PullRequest
0 голосов
/ 25 мая 2019

Я использую словарь, который выглядит примерно так:

data = {1: [3, 5], 2: [1, 2], 3: [1, 2, 3, 4], 4: [1, 2, 3], 5: [1, 2, 3]}

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

data = {1: [3, 5], 2: [1, 2], 3: [1, 2, 3, 4]}

Я пытался использовать это прямо здесь: Удаление дубликатов из словаря Но хотя я пытался изменить его, он довольно быстро усложняетсяи, вероятно, есть более простой способ сделать это.Я также пытался использовать функцию count (), но это не сработало.Вот как это выглядит.Может быть, я объявил это неправильно?

no_duplicates = [value for value in data.values() if data.count(value) == 1]

Есть ли простой способ удалить все пары ключ-значение, которые не являются уникальными по своим значениям?

1 Ответ

1 голос
/ 25 мая 2019

Вы можете сделать это с пониманием словаря, где вы создаете словарь с парами ключ-значение, где значение счетчика равно 1

def get_unique_dict(data):

    #Get the list of dictionary values
    values = list(data.values())

    #Make a new dictionary with key-value pairs where value occurs exactly once
    return {key: value for key, value in data.items() if values.count(value) == 1}

data = {1: [3, 5], 2: [1, 2], 3: [1, 2, 3, 4], 4: [1, 2, 3], 5: [1, 2, 3]}

print(get_unique_dict(data))

Выходные данные будут

{
    1: [3, 5], 
    2: [1, 2], 
    3: [1, 2, 3, 4]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...