Как изменить значение в словаре на None, если ключ идентичен значению

#python #dictionary

#python #словарь

Вопрос:

У меня есть куча файлов, из которых я создаю словари, и в некоторых файлах ключ и значение, которые я создаю, идентичны. Мне нужно отслеживать идентичные словари, чтобы другой человек мог обновлять их правильными значениями. Я хотел бы установить значение для этих словарей равным none. Я уже удалил все пробелы и странные символы, поэтому ключ и значение точно идентичны. Я в основном хочу сказать: «если ключ и значение идентичны, тогда установите значение = None»…

 x = file I'm creating dictionary from
if x[1] = x[4]:
    d[x[1]] = None
  

Но всякий раз, когда я делаю что-либо подобное, я получаю сообщение об ошибке:

 SyntaxError: invalid syntax
  

Есть предложения?

Комментарии:

1. Сразу = должно быть == при сравнении x[1] и x[2]

2. Очевидно, что вы создаете dict, поэтому все, что вам нужно изменить, это то, что предлагает Рафаэль, if x[1] == x[4]:

Ответ №1:

Поскольку я не могу правильно понять описание, я отвечу на заголовок :

 for k, v in d.items():
    if k == v:
        d[k] = None
  

Комментарии:

1. @pscuderi это нормально, потому что выполняется итерация по элементам (кортежам), а не по словарю

2. @brianpck, это не имеет значения, ничего не удаляется.

Ответ №2:

Для этого вы можете использовать понимание по словарю:

 >>> d = { 'a': 1, 'b': 2, 'c': 'c' }
>>> { a: None if a == b else b for a,b in d.items() }
{'a': 1, 'c': None, 'b': 2}
  

Очевидно, что это создаст копию всего словаря, поэтому приведенные выше ответы, вероятно, лучше подходят для вашего варианта использования.

Комментарии:

1. Я не думаю, что у них уже есть dict, они создают его из содержимого файла, так что это, вероятно, лучший подход.

Ответ №3:

В Python (и на всех других языках, которые я знаю) для сравнения значения в if используется двойное равенство == . Я предлагаю вам прочитать: Python IF…ELIF…Операторы ELSE. Ниже приведен пример кода, чтобы установить значение как, None где key и значение одинаковы:

 my_dict = {'a': '1', 'b': 'b', 'c': '2', 'd': 'd'}  # 'b' and 'c' have same
                                                    # 'key' and 'value'
for key, value in my_dict.items():
    if key == value:
        my_dict[key] = None

# Updated value of 'my_dict':
# {'a': '1', 'c': '2', 'b': None, 'd': None}
  

Комментарии:

1. @e9e9s: Добавлен пример кода для этого. Вы получите лучшую идею