Преобразовать значения словаря по заданному алгоритму

187 просмотра
0
0 Комментариев

Есть словарь вида {ключ:[список из двух элементов]}

d1 = {1:[10, 5], 2:[40, 8], 3:[144, 12], 4:[55, 11]}

как его преобразовать в словарь, где в качестве значения выступает результат деления нулевого элемента списка на первый:

d2 = {1:(10/5), 2:(40/8), 3:(144/12), 4:(55/11)}

чтобы в итоге получилось:

d2 = {1:2, 2:5, 3:12, 4:5}


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

1 Ответы

Python Опубликовано 12.12.2018
0

Элементарно:

d2 = {key: value[0]//value[1] for key, value in d1.items()}

Результат:

{1: 2, 2: 5, 3: 12, 4: 5}

Метод .items() словаря возвращает итератор, представляющий собой последовательность кортежей (ключ, значение), которые потом распаковываются в соответствующие переменные. Если вывести list(d1.items()), то результат будет такой:

[(1, [10, 5]), (2, [40, 8]), (3, [144, 12]), (4, [55, 11])]

// — это целочисленное деление, результат деления будет округляться до целого. Если нужен будет float (без округления), то для версии Python 3 нужно поменять деление на «одинарное» (/), а для версии Python 2 еще и преобразовать хотя бы один из аргументов в float:

d2 = {key: float(value[0])/value[1] for key, value in d1.items()}

Для Python 3 проще:

d2 = {key: value[0]/value[1] for key, value in d1.items()}

Результат:

{1: 2.0, 2: 5.0, 3: 12.0, 4: 5.0}

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up