Разделить список на словарь
Есть список:
['Tim: 350', 'Jane: 200', 'Alex: 400']
Как сделать из него такого рода словарь?:
{"Tim": 350, "Jane": 200, "Alex": 400}
Указанный список - не полный. На деле он больше, но меньше 100 строк.
Ответы (3 шт):
Автор решения: Зарина
→ Ссылка
Вообще - изучите язык python, эта задача решается базовыми функциями. Изучите метод split, циклы.
x = ['Tim: 350', 'Jane: 200', 'Alex: 400']
z = {a.split()[0]:int(a.split()[1]) for a in x}
Автор решения: Zhihar
→ Ссылка
arr = ['Tim: 350', 'Jane: 200', 'Alex: 400']
вариант 1:
res = dict((a := v.split(), (a[0][:-1], int(a[1])))[1] for v in arr)
вариант 2:
res = {a[:-1]:int(b) for a, b in map(str.split, arr)}
вариант 2.1 (понадёжнее, если в строке может быть несколько компонент:
res = {v[0][:-1]:int(v[1]) for v in map(str.split, arr)}
вариант 3: изврат без for
res = dict(zip(list(zip(*map(str.split, arr)))[0], map(int, list(zip(*map(str.split, arr)))[1])))
Автор решения: Stanislav Volodarskiy
→ Ссылка
Крохотная функция parse преобразует строку 'Tim: 350' в пару ('Tim', 350):
def parse(s):
k, v = s.split(': ')
return k, int(v)
Напускаем её на список строк. Получается (не) список пар ('Tim', 350), ('Jane', 200), ('Alex', 400). Его передаём в конструктор dict:
lst = ['Tim: 350', 'Jane: 200', 'Alex: 400']
d = dict(map(parse, lst))
print(d)
{'Tim': 350, 'Jane': 200, 'Alex': 400}