У меня есть CSV, как:
2018-01-31;1;2;4
2018-01-31;0;3;0
2018-02-01;5;6;7
2018-02-02;8;9;10
Моя цель - получить:
mydict = {
2018-01-31: [[1], [2,3], [4]],
2018-02-01: [[5], [6], [7]],
2018-03-02: [[8], [9], [10]]
}
Обратите внимание, что при наличии «дублирующего» ключа (например, 2018-01-31) его значение должно быть добавлено к предыдущим существующим значениям для этого ключа (2,3 в примере). Редактировать : Если возможно, я не хочу добавлять 0.
Пока что самое похожее решение, которое я смог найти, это:
from collections import OrderedDict
with open('myfile.csv') as f:
r = csv.reader(f, delimiter=";")
od = OrderedDict()
for row in r:
# get key/ first element in row
key = row[0]
# create key/list paring if it does not exist, else just append the value
od.setdefault(key, []).append(row[1:])
... который даже не является словарем. Я застрял на некоторое время с этим, большое спасибо заранее.
PS1: Количество строк / столбцов может различаться, но всегда будет одинаковое количество столбцов в строке
PS2: К сожалению, я не могу использовать панд