Из списка сделать словарь

klonnn

Новичок
Пользователь
Янв 29, 2022
3
0
1
Здравствуйте, имеется список:
Python:
[‘—4—‘ 1, ‘data1’, ‘data get’, ‘—4—‘, 4, ‘data5’, ‘text 123’, 5, 7, ‘—4—‘, ‘data7’, 5, 10, ‘!’]

Как можно сделать словарь из него ?
Тоесть мне нужно вот так (обрезать список до текста —4—):
Python:
{
  0: [1, ‘data1’, ‘data get’],
  1: [4, ‘data5’, ‘text 123’, 5, 7],
  2: [‘data7’, 5, 10, ‘!’]
}
 

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 677
479
83
Здравствуйте, имеется список:
Python:
[‘—4—‘ 1, ‘data1’, ‘data get’, ‘—4—‘, 4, ‘data5’, ‘text 123’, 5, 7, ‘—4—‘, ‘data7’, 5, 10, ‘!’]

Как можно сделать словарь из него ?
Тоесть мне нужно вот так (обрезать список до текста —4—):
Python:
{
  0: [1, ‘data1’, ‘data get’],
  1: [4, ‘data5’, ‘text 123’, 5, 7],
  2: [‘data7’, 5, 10, ‘!’]
}
можно так
Python:
lst = ["—4—", 1, "data1", "data get", "—4—", 4, "data5", "text 123", 5, 7, "—4—", "data7", 5, 10, "!"]
lst_temp = []
dct = {}
count = 0

for i in lst[1:]:
    if i == "—4—":
        dct[count] = lst_temp
        lst_temp = []
        count += 1
    else:
        lst_temp.append(i)
    dct[count] = lst_temp

dct2 = {
    0: [1, "data1", "data get"],
    1: [4, "data5", "text 123", 5, 7],
    2: ["data7", 5, 10, "!"]
}

print(dct == dct2)  # True
 
  • Мне нравится
Реакции: klonnn

Ципихович Эндрю

Активный пользователь
Пользователь
Мар 27, 2021
490
26
28
циклом фор нужно действовать то есть наверное Не однострочник
 

klonnn

Новичок
Пользователь
Янв 29, 2022
3
0
1
можно так
Python:
lst = ["—4—", 1, "data1", "data get", "—4—", 4, "data5", "text 123", 5, 7, "—4—", "data7", 5, 10, "!"]
lst_temp = []
dct = {}
count = 0

for i in lst[1:]:
    if i == "—4—":
        dct[count] = lst_temp
        lst_temp = []
        count += 1
    else:
        lst_temp.append(i)
    dct[count] = lst_temp

dct2 = {
    0: [1, "data1", "data get"],
    1: [4, "data5", "text 123", 5, 7],
    2: ["data7", 5, 10, "!"]
}

print(dct == dct2)  # True
Спасибо большое
 

Форум IT Специалистов