Академия Eduson

Словари. Основные методы

 Методы словарей

 Соотнесите методы словарей с их действием.

 Ответ:

  • get()     получает значение в словаре по ключу;
  • update()     объединяет словари;
  • pop()     возвращает значение по указанному ключу, удаляя из словаря пару (ключ, значение);
  • popitem()    возвращает последнюю добавленную пару (ключ, значение), удаляя её из словаря;
  • clear()     удаляет все элементы из словаря;
  • copy()    создает копию словаря;
  • items()     возвращает элементы словаря в виде пар (ключ, значение);
  • keys()    возвращает список ключей словаря;
  • values()    возвращает список значений словаря;

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

 Ответ: оператор del;  метод pop()

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

 Ответ:  popitem()

 Какой метод возвращает значение, связанное с заданным ключом, и удаляет из словаря пару ключ / значение?

 Ответ: pop()

 Какой метод возвращает значение, связанное с заданным ключом? Если ключ не найден, то он возвращает значение по умолчанию.

 Ответ:   get() 

 Что покажет приведенный ниже фрагмент кода?:

dct = {'понедельник': 1, 'вторник': 2, 'среда': 3}

print(dct.get('понедельник', 'Не найдено'))

 Ответ:  1

 Что покажет приведенный ниже фрагмент кода?:

dct = {'понедельник': 1, 'вторник': 2, 'среда': 3}

print(dct.get('пятница', 'Не найдено'))

 Ответ:  Не найдено

 Выберите все способы, с помощью которых можно очистить словарь, удалить его содержимое:

student = {'name': 'Rosaly',
           'class': 10,
           'marks': 75}

 Ответ:  student.clear()

 Дополните приведенный код, чтобы в переменной result хранился словарь, в котором ключи – числа от 1 до 15 (включительно), а значения представляют собой квадраты ключей.

result = {i: i * i for i in range(1, 16)}

 Дополните приведенный код так, чтобы он объединил содержимое двух словарей dict1 и dict2: если ключ есть в обоих словарях, добавьте его в результирующий словарь со значением, равным сумме соответствующих значений из первого и второго словаря; если ключ есть только в одном из словарей, добавьте его в результирующий словарь с его текущим значением. Результирующий словарь необходимо присвоить переменной result.

dict1 = {'a': 100, 'z': 333, 'b': 200, 'c': 300, 'd': 45, 'e': 98, 't': 76, 'q': 34, 'f': 90, 'm': 230}
dict2 = {'a': 300, 'b': 200, 'd': 400, 't': 777, 'c': 12, 'p': 123, 'w': 111, 'z': 666}

for key, value in dict2.items():
    dict1[key] = dict1.setdefault(key, 0) + value

result = dict1

 Дополните приведенный код так, чтобы в переменной result хранился словарь, в котором для каждого символа строки text будет подсчитано количество его вхождений.

text = 'footballcyberpunkextraterritorialityconversationalistblockophthalmoscopicinterdependencemamauserfff'

result = {}

for x in text:
    result[x] = result.get(x, 0) + 1

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

s = 'orange strawberry barley gooseberry apple apricot barley currant orange melon pomegranate banana banana orange barley apricot plum grapefruit banana quince strawberry barley grapefruit banana grapes melon strawberry apricot currant currant gooseberry raspberry apricot currant orange lime quince grapefruit barley banana melon pomegranate barley banana orange barley apricot plum banana quince lime grapefruit strawberry gooseberry apple barley apricot currant orange melon pomegranate banana banana orange apricot barley plum banana grapefruit banana quince currant orange melon pomegranate barley plum banana quince barley lime grapefruit pomegranate barley'

ls = s.split()
ls = sorted(ls)

am = {}

for x in ls:
    am[x] = am.get(x, 0) + 1

c = 0
ss = ''

for key, value in am.items():
    if am[key] > c:
        c = am[key]
        ss = key

print(ss)

 Вам доступен список pets, содержащий информацию о собаках и их владельцах. Каждый элемент списка – это кортеж вида (кличка собаки, имя владельца, фамилия владельца, возраст владельца).
 Дополните приведенный код так, чтобы в переменной result хранился словарь, в котором для каждого владельца будут перечислены его собаки. Ключом словаря должен быть кортеж (имя, фамилия, возраст владельца), а значением – список кличек собак (сохранив исходный порядок следования).

pets = [('Hatiko', 'Parker', 'Wilson', 50),
        ('Rusty', 'Josh', 'King', 25),
        ('Fido', 'John', 'Smith', 28),
        ('Butch', 'Jake', 'Smirnoff', 18),
        ('Odi', 'Emma', 'Wright', 18),
        ('Balto', 'Josh', 'King', 25),
        ('Barry', 'Josh', 'King', 25),
        ('Snape', 'Hannah', 'Taylor', 40),
        ('Horry', 'Martha', 'Robinson', 73),
        ('Giro', 'Alex', 'Martinez', 65),
        ('Zooma', 'Simon', 'Nevel', 32),
        ('Lassie', 'Josh', 'King', 25),
        ('Chase', 'Martha', 'Robinson', 73),
        ('Ace', 'Martha', 'Williams', 38),
        ('Rocky', 'Simon', 'Nevel', 32)]

result = {}

for x in pets:
    result.setdefault(x[1:], []).append(x[0])

 На вход программе подается строка текста. Напишите программу, которая выводит слово, которое встречается реже всего, без учета регистра. Если таких слов несколько, выведите то, которое меньше в лексикографическом порядке.

s = sorted([word.strip('.,!?:;-') for word in input().lower().split()])

am = {}

for x in s:
    am[x] = am.get(x, 0) + 1

c = len(s)
ss = ''

for y in am:
    if am[y] < c:
        c = am[y]
        ss = y

print(ss)

 На вход программе подается строка, содержащая строки-идентификаторы. Напишите программу, которая исправляет их так, чтобы в результирующей строке не было дубликатов. Для этого необходимо прибавлять к повторяющимся идентификаторам постфикс _n, где n– количество раз, сколько такой идентификатор уже встречался.

s = input().split()

am = {}

for x in s:
    am[x] = am.get(x, 0) + 1
    if am[x]==1:
        print(x, end=' ')
    else:
        if am[x] > 1:
            print(x + '_' + str(am[x] - 1), end=' ')