的字典假設以下toyset(從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]}
你可以看到,所有的元素都在所有列表,而不是在每個名單只是四個元素。如果我在循環中打印i,k,它會執行正確的項目和鍵對。所以我想問題是當我在關鍵字k的列表中添加項目i時。
有誰知道爲什麼所有元素都添加到所有列表中,並且什麼是構建我的字典的正確方法?
在此先感謝
感謝您使用「相同值」的解釋,這非常有幫助 – julia 2012-07-23 13:32:51