Академия Eduson

Словари. Основы работы

 Основы работы со словарями

 Что выведет следующий программный код?:

stuff = {1:'ааа', 2:'ббб', 3:'ввв', 4:'ггг'}

print(len(stuff))

 Ответ:  4

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

 Ответ:  in

Что выведет следующий код?:

dict1 = {'key1': 1, 'key2': 2}
dict2 = {'key2': 2, 'key1': 1}

print(dict1 == dict2)

 Ответ:  True

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

my_dict = {'foo': 100, 'bar': 200, 'baz': 300}

print(my_dict['bar':'baz'])

 Ответ:  ошибка во время выполнения

 Дополните приведенный код так, чтобы он вывел сумму минимального и максимального ключа в словаре my_dict.

my_dict = {1.12: 'aa', 67.9: 45, 3.11: 'ccc', 7.9: 'dd', 9.2: 'ee', 7.1: 'ff', 0.12: 'qq', 1.91: 'aa', 10.12: [1, 2, 3], 99.0: {9, 0, 1}}

s = min(my_dict) + max(my_dict)

print(s)

 Что покажет приведенный ниже фрагмент кода? (порядок элементов может отличаться):

my_dict = {1: [0, 1], 2: [2, 3], 3: [4, 5]}

for k in my_dict:
    print(k)

 Ответ:  1;  2;  3

 Что покажет приведенный ниже фрагмент кода? (порядок элементов может отличаться):

my_dict = {1: [0, 1], 2: [2, 3], 3: [4, 5]}

for k in my_dict.values():
    print(k)

 Ответ:  [0, 1];   [2, 3];   [4, 5]

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

 Ответ:  items()

 Дополните приведенный код, чтобы он вывел имена всех пользователей (в алфавитном порядке), чей номер оканчивается на 8.

users = [{'name': 'Todd', 'phone': '551-1414', 'email': 'todd@gmail.com'},
         {'name': 'Helga', 'phone': '555-1618', 'email': 'helga@mail.net'},
         {'name': 'Olivia', 'phone': '449-3141', 'email': ''},
         {'name': 'LJ', 'phone': '555-2718', 'email': 'lj@gmail.net'},
         {'name': 'Ruslan', 'phone': '422-145-9098', 'email': 'rus-lan.cha@yandex.ru'},
         {'name': 'John', 'phone': '233-421-32', 'email': ''},
         {'name': 'Lara', 'phone': '+7998-676-2532', 'email': 'g.lara89@gmail.com'},
         {'name': 'Alina', 'phone': '+7948-799-2434', 'email': 'ali.ch.b@gmail.com'},
         {'name': 'Robert', 'phone': '420-2011', 'email': ''},
         {'name': 'Riyad', 'phone': '128-8890-128', 'email': 'r.mahrez@mail.net'},
         {'name': 'Khabib', 'phone': '+7995-600-9080', 'email': 'kh.nurmag@gmail.com'},
         {'name': 'Olga', 'phone': '6449-314-1213', 'email': ''},
         {'name': 'Roman', 'phone': '+7459-145-8059', 'email': 'roma988@mail.ru'},
         {'name': 'Maria', 'phone': '12-129-3148', 'email': 'm.sharapova@gmail.com'},
         {'name': 'Fedor', 'phone': '+7445-341-0545', 'email': ''},
         {'name': 'Tim', 'phone': '242-449-3141', 'email': 'timm.ggg@yandex.ru'}]

res = [user['name'] for user in users if user['phone'].endswith('8')]

print(*sorted(res))

 Дополните приведенный код, чтобы он вывел имена всех пользователей (в алфавитном порядке), у которых нет информации об электронной почте.

users = [{'name': 'Todd', 'phone': '551-1414', 'email': 'todd@gmail.com'},
         {'name': 'Helga', 'phone': '555-1618'},
         {'name': 'Olivia', 'phone': '449-3141', 'email': ''},
         {'name': 'LJ', 'phone': '555-2718', 'email': 'lj@gmail.net'},
         {'name': 'Ruslan', 'phone': '422-145-9098', 'email': 'rus-lan.cha@yandex.ru'},
         {'name': 'John', 'phone': '233-421-32', 'email': ''},
         {'name': 'Lara', 'phone': '+7998-676-2532', 'email': 'g.lara89@gmail.com'},
         {'name': 'Alina', 'phone': '+7948-799-2434'},
         {'name': 'Robert', 'phone': '420-2011', 'email': ''},
         {'name': 'Riyad', 'phone': '128-8890-128', 'email': 'r.mahrez@mail.net'},
         {'name': 'Khabib', 'phone': '+7995-600-9080', 'email': 'kh.nurmag@gmail.com'},
         {'name': 'Olga', 'phone': '6449-314-1213', 'email': ''},
         {'name': 'Roman', 'phone': '+7459-145-8059'},
         {'name': 'Maria', 'phone': '12-129-3148', 'email': 'm.sharapova@gmail.com'},
         {'name': 'Fedor', 'phone': '+7445-341-0545', 'email': ''},
         {'name': 'Tim', 'phone': '242-449-3141', 'email': 'timm.ggg@yandex.ru'}]

r = [user['name'] for user in users if 'email' not in user.keys() or user['email'] == '']

print(*sorted(r))

 Напишите программу, которая будет превращать натуральное число в строку, заменяя все цифры в числе на слова:

  • 0 на zero;
  • 1 на one;
  • 2 на two;
  • 3 на three;
  • 4 на four;
  • 5 на five;
  • 6 на six;
  • 7 на seven;
  • 8 на eight;
  • 9 на nine.
n = int(input())
dd = dict(zip([str(i) for i in range(10)], ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'])) r = [dd[key] for key in str(n)] print(*r)

 Напишите программу, которая по номеру курса выводит информацию о данном курсе.

a = input()
d = {'CS101': '3004, Хайнс, 8:00', 'CS102': '4501, Альварадо, 9:00', 'CS103': '6755, Рич, 10:00', 'NT110': '1244, Берк, 11:00', 'CM241': '1411, Ли, 13:00'} print(f'{a}: {d[a]}')

 На мобильных кнопочных телефонах текстовые сообщения можно отправлять с помощью цифровой клавиатуры. Поскольку с каждой клавишей связано несколько букв, для большинства букв требуется несколько нажатий клавиш. При однократном нажатии цифры генерируется первый символ, указанный для этой клавиши. Нажатие цифры 2,3,4 или 5 раз генерирует второй, третий, четвертый или пятый символ клавиши.
 Напишите программу, которая отображает нажатия клавиш, необходимые для введенного сообщения.

a = input().upper()
d = {'1': '.,?!:', '2': 'ABC', '3': 'DEF', '4': 'GHI', '5': 'JKL', '6': 'MNO', '7': 'PQRS', '8': 'TUV', '9': 'WXYZ', '0': ' '} for i in range(len(a)): for key, value in d.items(): if a[i] in value: x = list(value) print(key * (x.index(a[i]) + 1), end='')

 Код Морзе для представления цифр и букв использует тире и точки. Напишите программу для кодирования текстового сообщения в соответствии с кодом Морзе.

letters = [c for c in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789']
morse = ['.-', '-...', '-.-.', '-..', '.', '..-.', '--.', '....', '..', '.---', '-.-', '.-..', '--', '-.', '---', '.--.', '--.-', '.-.', '...', '-', '..-', '...-', '.--', '-..-', '-.--', '--..', '-----', '.----', '..---', '...--', '....-', '.....', '-....', '--...', '---..', '----.'] md = dict(zip(letters, morse)) for l in input().upper(): for key, value in md.items(): if l in key: print(md[l], end=' ')