Python. Встроенные функции и операции обработки словарей

Встроенные функции и операции обработки словарей


Содержание


1. Встроенная функция len(). Количество элементов в словаре

Встроенная функция len() возвращает количество элементов в заданном словаре. В соответствии с документацией Python общая форма использования функции следующая

count = len(D)

где

  • D – исходный словарь;
  • count – искомое количество элементов (целочисленное значение).

Пример.

# Функция len() - получить количество элементов в словаре
# Пример 1
Months = { 1:'Jan', 2:'Feb', 3:'Mar', 4:'Apr',
           5:'May', 6:'Jun', 7:'Jul', 8:'Aug',
           9:'Sep', 10:'Oct', 11:'Nov', 12:'Dec' }
count = len(Months) # count = 12

# Пример 2. Использование вложенных словарей
Position = { 'Manager': { 'Director',
                          'Deputy Director' },
             'Teacher': { 'Specialist',
                          'Methodist',
                          'Senior Lecturer' },
             'Staff': { 'Cleaner',
                        'Porter',
                        'Watchman' } }

count1 = len(Position) # count1 = 3
count2 = len(Position['Manager']) # count2 = 2
count3 = len(Position['Staff']) # count3 = 3

 

2. Доступ к элементу словаря по его значению D[key]

С помощью операции [] можно получить доступ к значению, если известен ключ по которому это значение записано. Операция доступа [] позволяет как читать, так и записывать значения в словаре.

В соответствии с документацией Python общая форма использования операции [] для чтения значения следующая:

item = D[key]

здесь

  • D – заданный словарь;
  • key – ключ, на основе которого осуществляется поиск элемента item в словаре. Если ключа key нету в словаре, то генерируется исключение KeyError;
  • item – элемент, который получается по ключу key.

Если в словарь нужно записать или добавить значение item по ключу key, то операция [] имеет следующую форму использования

D[key] = item

Во время записи возможны два случая:

  • ключ key присутсвует в словаре. В этом случае значение item заменяет предыдущее значение;
  • ключа key нету в словаре. В этом случае к словарю добавляется новая пара key:item.

Пример.

# Операция [] - доступ по ключу к элементам словаря
# Пример 1
# Исходный словарь
WorkDays = { 1:'Mon', 2:'Tue' }

# Получить элемент
item = WorkDays[2] # item = 'Tue'

# Вместо 'Tue' записать 'Sat'
WorkDays[2] = 'Sat' # WorkDays = {1: 'Mon', 2: 'Sat'}

# Добавить новую пару (6:'Sun')
WorkDays[6] = 'Sun' # WorkDays = {1: 'Mon', 2: 'Sat', 6: 'Sun'}

# Пример 2. Случай с вложенными словарями
SubCat1 = { 1:'A', 2:'B', 3:'C' }
SubCat2 = { 4:'D', 5:'E' }

Category = { 'High':SubCat1,
             'Low' :SubCat2 }

# Получить элемент
item = Category['Low'] # item = {4: 'D', 5: 'E'}
item2 = Category['Low'][4] # item2 = 'D'

# Добавить элемент к словарю
Category['Middle'] = { 6:'J', 7:'К' }

# Изменить элемент в словаре
Category['High'][3] = 'F' # Category = {'High': {1:'A', 2:'B', 3:'F'},
                          #            'Low': {4:'D', 5:'E'},
                          #             'Middle': {6:'J', 7:'K'}}

 



3. Операция del. Удаление элемента по ключу

Операция del предназначена для удаления элемента из словаря на основе заданного ключа key. Общая форма использования операции следующая

del D[key]

где

  • D – заданный словарь;
  • key – ключ в словаре, элемент которого нужно удалить.

Если указать несуществующий ключ key, то будет сгенерировано исключение KeyError.

Пример.

# Операция del - удаление элемента из словаря

# Исходный словарь
Salary = { 'Director': 120800.0,
           'Secretary': 101150.25,
           'Locksmith': 188200.00 }

# Удалить элемент по ключу 'Secretary'
del Salary['Secretary'] # Salary = {'Director': 120800.0,
                        #            'Locksmith': 188200.0}

# Попытка удалить несуществующий ключ
# del Salary[5] - так нельзя, генерируется исключение KeyError: 5
# del Salary['None'] - тоже запрещено

 

4. Операция in. Определение наличия ключа в словаре

Чтобы определить, существует ли заданный ключ в словаре, в Python используется операция in. Общая форма использования операции in следующая

f_is = key in D

где

  • D – исходный словарь;
  • key – ключ, наличие которого в словаре D нужно определить;
  • f_is – результат логического типа. Если f_is=True, то ключ key присутствует в словаре. Если f_is=False, то ключа нету в словаре.

Пример. В примере используется операция in для того, чтобы определить есть ли в словаре ключ Salary, который нужно удалить. Операция используется в условном операторе if.

# Операция in - определение наличия ключа в словаре
# Исходный словарь
Salary = { 'Director': 120800.0,
           'Secretary': 101150.25,
           'Locksmith': 188200.00 }

# Удалить элемент по ключу 'Secretary' с проверкой
key = 'Secretary'
if key in Salary:
    del Salary['Secretary'] # Salary = {'Director': 120800.0,
                            #           'Locksmith': 188200.0}


# Попытка удалить несуществующий ключ
# если ключа нету, то исключение KeyError не генерируется
key2 = 5
if key2 in Salary:
    del Salary[key2]

 

5. Операция not in. Определение отсутствия ключа в словаре

Операция not in возвращает результат всегда противоположный операции in. Общая форма операции not in следующая:

f_is = key not in D

где

  • D – исходный словарь;
  • key – ключ, наличие которого в словаре D нужно определить;
  • f_is – результат логического типа. Если f_is = True, то ключа key нету в словаре D. Если f_is = False, то ключ key присутствует в словаре D.

Пример. В примере демонстрируется использование операции not in для определения того, присутствует ли в словаре ключ, который был введен из клавиатуры.

# Операция not in - определение отсутствия ключа в словаре
# Формирование словаря слов с их числовым эквивалентом

# 1. Сформировать пустой словарь
Words = dict() # Words = {}

# 2. Ввести количество слов в словаре
count = int(input("Number of words: "))

# 3. Цикл добавления слов
i=0
while i<count:
    print("Input word:")
    wrd = str(input("Text:"))
    value = int(input("Value: "))

    # Если ключа wrd нет в словаре, то добавить пару [wrd:value]
    if wrd not in Words:
        Words[wrd] = value
    i=i+1

# Вывести сформированный словарь
print("\nYou enter the following information:")
print(Words)

Результат работы программы:

Number of words: 3
Input word:
Text:wrd1
Value: 100
Input word:
Text:wrd2
Value: 200
Input word:
Text:wrd3
Value: 250

You enter the following information:
{'wrd1': 100, 'wrd2': 200, 'wrd3': 250}

 


Связанные темы