次のおもちゃセットを考えてみましょう (列名が「キー」であり、「データ」に入れたいくつかの行にのみ関心がある 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]}
各リストに 4 つの要素だけではなく、すべての要素がすべてのリストに含まれていることがわかります。ループ内で i, k を出力すると、アイテムとキーの正しいペアが実行されます。したがって、問題は、キー k のリストにアイテム i を追加するときだと思います。
すべての要素がすべてのリストに追加される理由と、辞書を作成する正しい方法を知っている人はいますか?
前もって感謝します