19. Снова про таможню.
Условие:
Дан список посылок с адресами и ценами в евро в виде списка кортежей:
packages = [('2-я Бауманская улица, 5', 141.59), ('ул. Воронцовская, д. 35Б, корп.2', 130.87), ('Ленинские Горы, 1П', 113.26), ('ул. Воронцовская, д. 35Б, корп.2', 108.54), ('ул. Радио, д.24, корпус 1', 98.04), ('ул. Бауманская, д. 6, стр. 2', 60.88), ('ул. Воронцовская, д. 35Б, корп.2', 40.3), ('2-я Бауманская улица, 5', 49.99), ('ул. Бауманская, д. 6, стр. 2', 51.07), ('ул. Воронцовская, д. 35Б, корп.2', 85.74), ('2-я Бауманская улица, 5', 99.38), ('Госпитальный переулок, д. 4/6', 4.51), ('3-я ул. Ямского Поля, д. 32', 29.24), ('2-я Бауманская улица, 5', 92.99), ('Ленинские Горы, 1П', 70.77), ('Госпитальный переулок, д. 4/6', 4.0), ('Госпитальный переулок, д. 4/6', 93.53), ('2-я Бауманская улица, 5', 51.13), ('2-я Бауманская улица, 5', 12.63), ('ул. Воронцовская, д. 35Б, корп.2', 31.96), ('ул. Бауманская, д. 6, стр. 2', 70.42), ('Ленинские Горы, 1с46', 8.56), ('ул. Радио, д.24, корпус 1', 49.98), ('Госпитальный переулок, д. 4/6', 105.0), ('ул. Радио, д.24, корпус 1', 118.84), ('Ленинские Горы, 1П', 5.59), ('Госпитальный переулок, д. 4/6', 4.47), ('Ленинские Горы, 1П', 100.7), ('3-я ул. Ямского Поля, д. 32', 15.18), ('Ленинские Горы, 1П', 19.01), ('Ленинские Горы, 1П', 8.68), ('ул. Бауманская, д. 6, стр. 2', 139.56), ('Ленинские Горы, 1П', 102.21), ('ул. Воронцовская, д. 35Б, корп.2', 106.15), ('ул. Воронцовская, д. 35Б, корп.2', 130.44), ('Ленинские Горы, 1П', 146.66), ('2-я Бауманская улица, 5', 41.63), ('Госпитальный переулок, д. 4/6', 54.06), ('Ленинские Горы, 1П', 21.08), ('ул. Воронцовская, д. 35Б, корп.2', 68.34), ('Ленинские Горы, 1П', 138.69), ('ул. Бауманская, д. 6, стр. 2', 77.28), ('ул. Воронцовская, д. 35Б, корп.2', 62.62), ('3-я ул. Ямского Поля, д. 32', 73.93), ('ул. Воронцовская, д. 35Б, корп.2', 96.33), ('3-я ул. Ямского Поля, д. 32', 98.77), ('Госпитальный переулок, д. 4/6', 123.99), ('ул. Бауманская, д. 6, стр. 2', 22.68), ('Ленинские Горы, 1с46', 113.53), ('Ленинские Горы, 1П', 13.08)]
Посчитать суммарную сумму покупок и количество посылок для каждого адреса (в каком виде считать и отображать, выберите самостоятельно).
Код:
packages = [('2-я Бауманская улица, 5', 141.59), ('ул. Воронцовская, д. 35Б, корп.2', 130.87), ('Ленинские Горы, 1П', 113.26), ('ул. Воронцовская, д. 35Б, корп.2', 108.54), ('ул. Радио, д.24, корпус 1', 98.04), ('ул. Бауманская, д. 6, стр. 2', 60.88), ('ул. Воронцовская, д. 35Б, корп.2', 40.3), ('2-я Бауманская улица, 5', 49.99), ('ул. Бауманская, д. 6, стр. 2', 51.07), ('ул. Воронцовская, д. 35Б, корп.2', 85.74), ('2-я Бауманская улица, 5', 99.38), ('Госпитальный переулок, д. 4/6', 4.51), ('3-я ул. Ямского Поля, д. 32', 29.24), ('2-я Бауманская улица, 5', 92.99), ('Ленинские Горы, 1П', 70.77), ('Госпитальный переулок, д. 4/6', 4.0), ('Госпитальный переулок, д. 4/6', 93.53), ('2-я Бауманская улица, 5', 51.13), ('2-я Бауманская улица, 5', 12.63), ('ул. Воронцовская, д. 35Б, корп.2', 31.96), ('ул. Бауманская, д. 6, стр. 2', 70.42), ('Ленинские Горы, 1с46', 8.56), ('ул. Радио, д.24, корпус 1', 49.98), ('Госпитальный переулок, д. 4/6', 105.0), ('ул. Радио, д.24, корпус 1', 118.84), ('Ленинские Горы, 1П', 5.59), ('Госпитальный переулок, д. 4/6', 4.47), ('Ленинские Горы, 1П', 100.7), ('3-я ул. Ямского Поля, д. 32', 15.18), ('Ленинские Горы, 1П', 19.01), ('Ленинские Горы, 1П', 8.68), ('ул. Бауманская, д. 6, стр. 2', 139.56), ('Ленинские Горы, 1П', 102.21), ('ул. Воронцовская, д. 35Б, корп.2', 106.15), ('ул. Воронцовская, д. 35Б, корп.2', 130.44), ('Ленинские Горы, 1П', 146.66), ('2-я Бауманская улица, 5', 41.63), ('Госпитальный переулок, д. 4/6', 54.06), ('Ленинские Горы, 1П', 21.08), ('ул. Воронцовская, д. 35Б, корп.2', 68.34), ('Ленинские Горы, 1П', 138.69), ('ул. Бауманская, д. 6, стр. 2', 77.28), ('ул. Воронцовская, д. 35Б, корп.2', 62.62), ('3-я ул. Ямского Поля, д. 32', 73.93), ('ул. Воронцовская, д. 35Б, корп.2', 96.33), ('3-я ул. Ямского Поля, д. 32', 98.77), ('Госпитальный переулок, д. 4/6', 123.99), ('ул. Бауманская, д. 6, стр. 2', 22.68), ('Ленинские Горы, 1с46', 113.53), ('Ленинские Горы, 1П', 13.08)]
packages_result = dict() # составим словарь, в котором ключом является адрес, а значеним ключа кортеж из суммы покупок и их количества
for i in packages:
if i[0] not in packages_result.keys(): # условие, при котором заносится первая запись о покупке для адреса
packages_result[i[0]] = ("Сумма покупок:", i[-1], "количество покупок:", 1)
elif i[0] in packages_result.keys(): # условие, при котором модифицируется уже имеющаяся запись о покупках для адреса
packages_result[i[0]] = ("Сумма покупок:", round((packages_result[i[0]][1] + i[-1]), 2), "количество покупок:", (packages_result[i[0]][-1] + 1))
for i in packages_result.items():
print(i)