Найти - Пользователи
Полная версия: Преобразование в словарь
Начало » Python для новичков » Преобразование в словарь
1
kropotkinmahno
Добрый день!
Помогите,пожалуйста, в следующем вопросе:
со стандартного ввода считывается строка вида: “bookname1 23 bookname2 20 bookname3 35”
нужно преобразовать в словарь вида:
{'bookname1' : 23, ‘bookname2’ : 20, ‘bookname3’ : 35}
old_monty
 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}
везде значение одно и тоже
old_monty
kropotkinmahno
Спасибо за оперативность, но почему то выводит {'bookname1': 35, ‘bookname2’: 35, ‘bookname3’: 35}везде значение одно и тоже
Виноват, слишком увлекся оперативностью.
Romissevd
немного скорректированный код old_monty
 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)
4kpt_V
Зачем индексы для последовательного получения?
iter решает проблему.

 #
a = iter(s.split())
dct = {k:int(v) for k, v in zip(a, a)}

P.S. Я за регекспы, если что
kropotkinmahno
Спасибо огромное!
old_monty
Вот так уже работает:
  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}
PS: Пока исправлял, не увидел, что уже появились решения Romissevd и 4kpt_V.
kropotkinmahno
чем больше разных вариантов, тем лучше для новичка
Спасибо всем!
Если есть еще варианты, можете писать
py.user.next
  
>>> 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}
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB