Когда данные собираются из разных источников, они обычно представлены в виде словаря в языке программирования Python. Я проанализировал эти данные и обнаружил, что некоторые ключи не содержат полезной информации и имеют пустые значения.
Чтобы упростить работу с этими данными и сделать их более удобными для анализа, я использовал цикл Python для удаления ненужных пустых ключей. Это позволило мне избавиться от лишних элементов и сосредоточиться на тех данных, которые действительно важны для моего исследования.
Теперь давайте проясним, что именно я имею в виду, говоря о пустых ключах. В контексте словарей в Python пустой ключ — это ключ, который не имеет связанного с ним значения. Например, словарь может содержать ключ «age» без значения, то есть {‘age»: None}. В этом случае сам ключ не является пустым, но его значение отсутствует.
Возможно, вам кажется, что в этом случае ключ должен быть пустым, например, {«»: 21}. Однако, используя мою терминологию, можно сказать, что пустые ключи — это ключи, которые не содержат никакой информации.
Существует несколько методов в Python, которые позволяют удалять ключи с пустыми значениями. Один из них — использование цикла для перебора всех ключей и проверки, является ли значение каждого ключа пустым. Если значение пусто, ключ можно удалить из словаря.
Как удалить пустые ключи из Dict
Создайте словарь user_data, как показано ниже.
user_data = { "name": "Caleb", "age": 20, "email": "[email protected]", "preferences": [], "alternate_email":None }
Обратите внимание на словарь, в котором есть два ключа без предпочтений и alter_email. По какой-то причине эти ключи больше не требуют словаря user_data.
Чтобы удалить из словаря user_data пустые ключи, нужно определить, какие из них не содержат значений. Для этого создайте пустой список с именем key_no_value, в который будут помещаться такие ключи. Затем запустите цикл for, чтобы перебрать все ключи в словаре и найти те, которые не имеют значения.
key_no_value = [] for key, value in user_data.items(): if value in [None, " ", {}, []]: key_no_value.append(key) print("These are keys withou value", key_no_value)
В коде выше мы видим, что создаётся пустой список с именем `key_no_value` (строка `key_no_value = []`). Затем запускается цикл, который проходит по всем парам ключ-значение в словаре `user_data`. Для этого используется метод `items()`.
Следующий оператор, `if value in [None, «, «», {}, []]`, проверяет, является ли текущее значение пустым (None, пустая строка, пустой словарь или пустой список). Если это так, то соответствующий ключ добавляется в список `key_no_value`, который создаётся ранее. Для этого используется метод `add()`.
Таким образом, список `key_no_value` содержит все ключи, которые имеют пустые значения (None, пустые строки, пустые словари или пустые списки).
Наша задача — удалить эти ключи. Для этого мы снова запускаем цикл for, чтобы пройтись по списку `key_no_value` и удалить пустые ключи.
for key in key_no_value: del user_data[key] print('After removing empty keys:', user_data)
Посмотрите на вывод: он удаляет все пустые ключи из словаря user_data.
Здесь эта строка кода «для ключа в key_no_value: del user_data[key]» берет каждый ключ из списка «key_not_value», а затем удаляет эти пары «ключ-значение», используя del user_data[key].
Таким образом, он возвращает окончательный словарь user_data без пустых ключей в виде {‘name’: ‘Caleb’, ‘age’: 20, ’email’: ‘[email protected]’}.
Используя словарное понимание
Понимание словаря — это более простой способ создания нового словаря на основе существующего с использованием выражения, за которым следует цикл for, заключённый в фигурные скобки {}.
Чтобы удалить из словаря пустые ключи, возьмите те же user_data, которые мы использовали в предыдущем разделе.
user_data = { "name": "Caleb", "age": 20, "email": "[email protected]", "preferences": [], "alternate_email":None } cleaned_user_data = {key:value for key ,value in user_data.items() if value not in [None, "", {}, []]} print(cleaned_user_data)
Давайте разберемся с частью кода {ключ: значение для ключа, значение в user_data.items(), если значение не в [None, «», {}, []]}, эта часть кода имеет три вещи, во-первых, это «ключ: value», второй — это цикл «для ключа, значения в user_data.items()», а третий — «если значение не в [None, «», {}, []]».
Начните с цикла «для ключа, значения в user_data.items()». Вы уже знакомы с этой строкой кода, которая позволяет получить доступ к каждой паре ключ-значение словаря user_data с помощью метода items().
Далее, ‘if значение не в [None, ” “, {}, []]’ проверяет, что каждое значение отсутствует в списке [None, ” “, {}, []] или значение каждого ключа не равно значениям в [Нет, ” “, {}, []].
Если значение не совпадает ни с одним из пустых значений, например, в списке [None, «, {}, []], то соответствующий ключ с этим значением включается в новый словарь clean_user_data.
В результате в словарь clean_user_data включен только ключ с некоторым значением {‘name’: ‘Caleb’, ‘age’: 20, ’email’: ‘[email protected]’}.
С использованием цикла For
Вы можете использовать один цикл for, чтобы удалить ключи с пустыми значениями, при этом сохранив ключи со значениями в новом словаре.
Например, давайте возьмем те же «user_data» и используем их в цикле for, как показано в коде ниже.
user_data = { "name": "Caleb", "age": 20, "email": "[email protected]", "preferences": [], "alternate_email":None } dict_without_empty_keys = {} for key, value in user_data.items(): if key and value: dict_without_empty_keys[key]=value print("These are keys without value", dict_without_empty_keys)
Посмотрите, как это реализовано с помощью единственного цикла for. Из словаря user_data были удалены ключи с пустыми значениями.
Понимание этой части кода: «если ключ и значение: dict_without_empty_keys[key] = value». Здесь происходит проверка, существуют ли ключ и значение. Если они существуют, то значение этого ключа добавляется в словарь dict_without_empty_keys.
В условном операторе «если ключ и значение» оба условия должны быть истинными. Если ключ существует, а значение отсутствует, то значение этого ключа не добавляется в словарь. И наоборот, если значение существует, а ключ отсутствует, то ключ не добавляется в словарь.