Как проверить пустой ли словарь python
Перейти к содержимому

Как проверить пустой ли словарь python

  • автор:

Проверка наличия данных в словаре

Имеются 3 словаря: inventData , invent101 и invent21 , которые я соединяю, делая из них 1 — inventDataAll . Хотя словари и соединяются, но дело в том, что в словаре inventData есть данные которых нет в invent101 и invent21 . Мне необходимо, чтобы скрипт печатал, какие данные он не нашел, но это не происходит. Вместо этого выводится «Инвентарник» + value[‘invent’] + «счетах не значится» именно столько раз сколько раз отрабатывает первый цикл, вне зависимости от того есть эти данные в invent101 и invent21 или нет. Хотелось получить помощь по этому поводу.

inventData = <> # 1 словарь # . inventData.setdefault(index, dict(name=name, serial=serial, invent=invent, produce=produce)) # . invent101 = <> # 2 словарь # . invent101.setdefault(index, dict(invent=invent, checked=checked, worked=worked, cost=cost)) # . invent21 = <> # 3 словарь # . invent21.setdefault(index, dict(invent=invent, checked=checked, worked=worked, cost=cost)) # . inventDataAll = <> # Итоговый словарь for key, value in inventData.items(): for key101, value101 in invent101.items(): if value['invent'] == value101['invent']: inventDataAll.setdefault(key, dict(name=value['name'], serial=value['serial'], invent=value['invent'], produce=value['produce'], checked=value101['checked'], worked=value101['worked'], cost=value101['cost'])) elif value['invent'] != value101['invent']: for key21, value21 in invent21.items(): if value['invent'] == value21['invent']: inventDataAll.setdefault(key, dict(name=value['name'], serial=value['serial'], invent=value['invent'], produce=value['produce'], checked=value21['checked'], worked=value21['worked'], cost=value21['cost'])) else: print("Инвентарник" + value['invent'] + "счетах не значится") 

Отслеживать
задан 2 окт 2016 в 10:54
13 8 8 бронзовых знаков

Насколько я понимаю, else должно быть на одном уровне с if, а сейчас оно на одном уровне со внутреннем for, поэтому код в этом else срабатывает каждый раз, когда успешно завершается внутренний for.

2 окт 2016 в 12:34
Покажите структуру словарей. Возможно, есть более изящный способ найти расхождения.
3 окт 2016 в 8:50

Уважаемый @Sergey Gornostaev на счет структуры словарей, данные берутся из 3-х екселевских файлов, долго думал как объединить данные, додумался только до этого.

3 окт 2016 в 17:38

По поводу комментария товарища @insolor esle переставлял не раз во всевозможных вариациях, баловался с brake, ничего путного не выходит. я понял о чем Вы, но мне кажется все что можно я перепробовал

Проверка наличия/отсутствия значения value в словаре Python

Дополнительно смотрите метод словаря dict.values() .

Примеры проверки наличия значения в словаре:

>>> x = 'one': 0, 'two': 20, 'three': 3, 'four': 4> >>> values = x.values() >>> del x['three'] >>> 0 in values # True >>> 0 not in values # False # значение ключа, которое было удалено >>> 3 in values # False >>> 3 not in values # True 
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Представления словарей dict.keys, dict.values и dict.items
  • Исходный словарь для представления dictview.mapping
  • Получение списка ключей словаря list(dict)
  • Количество элементов в словаре len(dict)
  • Доступ к значению словаря по ключу dict[key]
  • Добавление/изменение значения словаря по ключу key
  • Удаление значения словаря по ключу
  • Проверка наличия/отсутствия ключа key в словаре dict
  • Проверка наличия/отсутствия значения value в словаре Python
  • Проверка наличия/отсутствия пары (key, value) в словаре dict
  • Итерирование по ключам и значениям словаря Python
  • Метод dict.clear(). Очистить словарь
  • Метод dict.copy(), копия словаря
  • Метод dict.fromkeys(), словарь с ключами по умолчанию
  • Метод dict.get(), значение по умолчанию если ключа нет
  • Метод dict.items(), список кортежей
  • Метод dict.keys(), список ключей словаря
  • Метод dict.values(), список значений словаря
  • Метод dict.pop()
  • Метод dict.popitem(), получить пару ключ/значение
  • Метод dict.setdefault(), получает/вставляет значение ключа
  • Метод dict.update(), обновление/дополнение словаря
  • Объединение двух словарей в новый словарь Python
  • Сортировка словаря по значению и/или ключу
  • Обратный порядок/реверс словаря reversed(dict)
  • Генератор словаря и его использование
  • Фильтр словаря по ключам и/или значениям
  • Словарь как фабрика функций

ХОЧУ ПОМОЧЬ
ПРОЕКТУ

Dictionary (Словари)

Словарь (неупорядоченные коллекции из разных объектов с доступом по ключу) создаётся при помощи фигурных скобок, внутри которых указываются пары «ключ-значение» через запятые. Также можно создать пустой словарь и позже добавлять пары. В Python словарь определён в классе dict. Иногда используют термин ассоциативные массивы или хеш-таблицы.

 catDictionary = emptyDictionary = <> 

Другие варианты создания словарей.

С помощью функции dict():

 dictionary = dict(short='dict', long='dictionary') print(dictionary) # numberDict = dict([(1, 3), (2, 9)]) print(numberDict) #

С помощью метода fromkeys():

 noneDictionary = dict.fromkeys(['a', 'b']) print(noneDictionary) # fullDictionary = dict.fromkeys(['a', 'b'], 9) print(fullDictionary) #

И ключи и значения в одном словаре могут быть разных типов (строки, числа).

Ключи и значения могут выводиться в различном порядке, потому что словари, в отличие от списков, не упорядочены (не ранжированы). В словаре нет первого элемента, потому что нет какого-нибудь порядка расположения элементов.

Число пар в словаре можно получить через len.

 print(len(catDictionary)) # 3 

Доступ к значению можно получить через ключ, указанный в квадратных скобках. Если указать неправильный ключ, то вернётся ошибка.

 print(catDictionary["key3"]) # Vaska 

Также можно через метод get().

 val = catDictionary.get("key2") print(val) # Murzik 

При не существующем ключе можно вернуть собственное сообщение.

 val = catDictionary.get("key5", "That key is not found") print(val) 

Проверить, есть ли проверяемый ключ в словаре можно через оператор in. В успешном случае возвращается True или 1, в противном случае возвращается False или 0.

 print("key4" in catDictionary) # 0 print("key1" in catDictionary) # True 

Получить все ключи можно через keys(). Метод возвращает значение типа dict_keys.

 keys = catDictionary.keys() print(list(keys)) 

Получить все значения ключей можно через values(). Метод возвращает значение типа dict_values.

 values = catDictionary.values() print(list(values)) # ['Murzik', 'Vaska', 'Barsik'] 

Получить все ключи со значениями можно через items().

 items = catDictionary.items() print(items) # dict_items([('key2', 'Murzik'), ('key3', 'Vaska'), ('key1', 'Barsik')]) 

Чтобы обновить значение в словаре, нужно указать ключ и новое значение.

 catDictionary["key1"] = "Ryzhik" 

По такому же принципу можно добавить новый ключ со значением.

 catDictionary["key4"] = "Murka" 

Удалить элемент (ключ-значение) можно через оператор del. Также можно удалить весь словарь.

 del catDictionary["key4"] del catDictionary 

Если мы не хотим удалять сам словарь, а только очистить его от элементов, то воспользуемся методом clear().

 catDictionary.clear() print(catDictionary) # <> 

Выражение favorites1 == favorites2 истинно потому, что словари не упорядочены и считаются эквивалентными, если состоят из одинаковых пар ключ-значение.

Списки с одинаковыми значениями элементов, но разным порядком их следования, равны не будут.

 favorites1 = favorites2 = favorites1 == favorites2 # True 

Проверить наличие пустого набора в Python

В этом посте мы обсудим, как проверить наличие пустого множества в Python.

Python 3.x представил синтаксис для литералов множества — фигурные скобки, окружающие содержимое изменяемого множества. Однако в Python нет литерала для пустого множества. Это связано с тем, что литералы набора отличаются от словарей отсутствием пар ключ-значение (разделенных двоеточиями). Следовательно, <> синтаксис представляет пустой словарь, а set() представляет собой пустой набор.

1. Использование len() функция

Простое решение для проверки того, является ли набор пустым, использует len() функция. Возвращает общее количество элементов в наборе. Поскольку пустой набор имеет длину 0, вы можете использовать это как:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *