Добавить элементы в словарь списков

Предположим, следующий набор игрушек (из файла CSV, где имена столбцов являются «ключами», и меня интересуют только некоторые строки, которые я помещаю в «данные»):

keys = ['k1', 'k2', 'k3', 'k4']
data = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]

Я хочу получить словарь со списком для каждого столбца, вот так:

{'k1': [1, 5, 9, 13], 'k2': [2, 6, 10, 14], 'k3': [3, 7, 11, 15], 'k4': [4, 8, 
12, 16]}

В моем коде я сначала инициализирую словарь пустыми списками, а затем итерирую (в порядке клавиш ), чтобы добавить каждый элемент в свой список.

my_dict = dict.fromkeys(keys, [])
for row in data:
    for i, k in zip(row, keys):
        my_dict[k].append(i)

Но это не работает. Он строит этот словарь:

{'k3': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], 'k2': [1, 2, 3,
4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], 'k1': [1, 2, 3, 4, 5, 6, 7, 8, 
9, 10, 11, 12, 13, 14, 15, 16], 'k4': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 
13, 14, 15, 16]}

Вы можете видеть, что все элементы находятся во всех списках, а не только четыре элемента в каждом списке. Если я напечатаю я,k в цикле делает правильные пары элементов и ключей. Итак, я думаю, проблема в том, что я добавляю элемент i в список для ключа k.

Кто-нибудь знает, почему все элементы добавляются во все списки и как правильно составить мой словарь?

Заранее спасибо

5
задан julia 23 July 2012 в 13:14
поделиться