Добрый день!
Помогите,пожалуйста, в следующем вопросе:
со стандартного ввода считывается строка вида: “bookname1 23 bookname2 20 bookname3 35”
нужно преобразовать в словарь вида:
{'bookname1' : 23, ‘bookname2’ : 20, ‘bookname3’ : 35}
s = "bookname1 23 bookname2 20 bookname3 35" lst = s.split() values = lst[1::2] keys = lst[::2] dct = {k:int(v) for k in keys for v in values}
kropotkinmahnoВиноват, слишком увлекся оперативностью.
Спасибо за оперативность, но почему то выводит {'bookname1': 35, ‘bookname2’: 35, ‘bookname3’: 35}везде значение одно и тоже
s = "bookname1 23 bookname2 20 bookname3 35" lst = s.split() values = lst[1::2] keys = lst[::2] dct = {k:int(v) for k, v in zip(keys,values)} print(dct)
# a = iter(s.split()) dct = {k:int(v) for k, v in zip(a, a)}
s = "bookname1 23 bookname2 20 bookname3 35" lst = s.split() values = lst[1::2] keys = lst[::2] tpl = zip(keys, values) dct = {k:int(v) for k, v in tpl}
>>> s = 'bookname1 23 bookname2 20 bookname3 35' >>> >>> lst = s.split() >>> dct = dict(zip(lst[::2], map(int, lst[1::2]))) >>> dct {'bookname3': 35, 'bookname2': 20, 'bookname1': 23} >>>
>>> s = 'bookname1 23 bookname2 20 bookname3 35' >>> >>> it = iter(s.split()) >>> dct = dict(zip(it, map(int, it))) >>> dct {'bookname2': 20, 'bookname3': 35, 'bookname1': 23} >>>