#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: Добавлен пример кода для этого. Вы получите лучшую идею