Функция zip() объединяет 2 массива не полностью
Есть список с цифрами(values):
list_b = ['2021-09-14', '0', '0', '0', '0', '0', '212', '212', '5.0', '100.0%',
'2021-09-13', '0', '0', '0', '0', '0', '159', '159', '5.0', '100.0%',
'2021-09-11', '0', '0', '0', '0', '0', '145', '145', '5.0', '100.0%',
'2021-09-10', '0', '0', '0', '0', '0', '196', '196', '5.0', '100.0%',
'2021-09-09', '0', '0', '0', '6', '0', '111', '117', '4.9', '94.87%',
'2021-09-08', '0', '0', '0', '0', '0', '103', '103', '5.0', '100.0%',
'2021-09-07', '0', '0', '0', '0', '0', '201', '201', '5.0', '100.0%',
'2021-09-06', '3', '0', '0', '0', '0', '135', '135', '5.0', '100.0%',
'2021-09-04', '0', '0', '0', '0', '0', '95', '95', '5.0', '100.0%',
'2021-09-03', '0', '0', '0', '0', '0', '127', '127', '5.0', '100.0%']
И список с названиями(keys):
list_a = ["Дата: ", "с ошибкой: ", "с оценкой 1: ", "с оценкой 2: ", "с оценкой 3: ",
"с оценкой 4: ", "с оценкой 5: ", "Всего: ", "Среднее: ", "Процент удовлетворенности: "]
Хочу это оформить в виде словаря и потом записать в .csv файл в таком виде:

Запускаю код:
for keys, values in zip(list_a, list_b):
print(keys, values)
Но результат выполнения программы - только первый элемент из списка b:
Ответы (2 шт):
Автор решения: strawdog
→ Ссылка
Слишком много лишних движений, кроме того, вы поленились почитать документацию про функцию zip. Воспользуйтесь модулем pandas:
import pandas as pd
list_b = ['2021-09-14', '0', '0', '0', '0', '0', '212', '212', '5.0', '100.0%',
'2021-09-13', '0', '0', '0', '0', '0', '159', '159', '5.0', '100.0%',
'2021-09-11', '0', '0', '0', '0', '0', '145', '145', '5.0', '100.0%',
'2021-09-10', '0', '0', '0', '0', '0', '196', '196', '5.0', '100.0%',
'2021-09-09', '0', '0', '0', '6', '0', '111', '117', '4.9', '94.87%',
'2021-09-08', '0', '0', '0', '0', '0', '103', '103', '5.0', '100.0%',
'2021-09-07', '0', '0', '0', '0', '0', '201', '201', '5.0', '100.0%',
'2021-09-06', '3', '0', '0', '0', '0', '135', '135', '5.0', '100.0%',
'2021-09-04', '0', '0', '0', '0', '0', '95', '95', '5.0', '100.0%',
'2021-09-03', '0', '0', '0', '0', '0', '127', '127', '5.0', '100.0%']
list_a = ["Дата: ", "с ошибкой: ", "с оценкой 1: ", "с оценкой 2: ", "с оценкой 3: ",
"с оценкой 4: ", "с оценкой 5: ", "Всего: ", "Среднее: ", "Процент удовлетворенности: "]
data = [list_b[x:x+10] for x in range(0, len(list_b), 10)]
df = pd.DataFrame(data, columns=list_a)
теперь df у вас:
Дата: с ошибкой: ... Среднее: Процент удовлетворенности:
0 2021-09-14 0 ... 5.0 100.0%
1 2021-09-13 0 ... 5.0 100.0%
2 2021-09-11 0 ... 5.0 100.0%
3 2021-09-10 0 ... 5.0 100.0%
4 2021-09-09 0 ... 4.9 94.87%
5 2021-09-08 0 ... 5.0 100.0%
6 2021-09-07 0 ... 5.0 100.0%
7 2021-09-06 3 ... 5.0 100.0%
8 2021-09-04 0 ... 5.0 100.0%
9 2021-09-03 0 ... 5.0 100.0%
Ну а далее датафрейм можно сразу записать в csv:
df.to_csv('filename.csv')
Автор решения: CrazyElf
→ Ссылка
Разобрать в словарь можно так, хотя я и не уверен, какой именно вы хотите словарь:
d = {key: list_b[i::len(list_a)] for i, key in enumerate(list_a)}
print(d)
Вывод:
{
'Дата: ': ['2021-09-14', '2021-09-13', '2021-09-11', '2021-09-10', '2021-09-09', '2021-09-08', '2021-09-07', '2021-09-06', '2021-09-04', '2021-09-03'],
'с ошибкой: ': ['0', '0', '0', '0', '0', '0', '0', '3', '0', '0'],
'с оценкой 1: ': ['0', '0', '0', '0', '0', '0', '0', '0', '0', '0'],
'с оценкой 2: ': ['0', '0', '0', '0', '0', '0', '0', '0', '0', '0'],
'с оценкой 3: ': ['0', '0', '0', '0', '6', '0', '0', '0', '0', '0'],
'с оценкой 4: ': ['0', '0', '0', '0', '0', '0', '0', '0', '0', '0'],
'с оценкой 5: ': ['212', '159', '145', '196', '111', '103', '201', '135', '95', '127'],
'Всего: ': ['212', '159', '145', '196', '117', '103', '201', '135', '95', '127'],
'Среднее: ': ['5.0', '5.0', '5.0', '5.0', '4.9', '5.0', '5.0', '5.0', '5.0', '5.0'],
'Процент удовлетворенности: ': ['100.0%', '100.0%', '100.0%', '100.0%', '94.87%', '100.0%', '100.0%', '100.0%', '100.0%', '100.0%']
}
