回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>假设下面的toyset(来自一个CSV文件,其中列名是“keys”,我只对放入“data”的一些行感兴趣):</p>
<pre><code>keys = ['k1', 'k2', 'k3', 'k4']
data = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
</code></pre>
<p>我想要一本字典,每一列都有一个列表,如下所示:</p>
<pre><code>{'k1': [1, 5, 9, 13], 'k2': [2, 6, 10, 14], 'k3': [3, 7, 11, 15], 'k4': [4, 8,
12, 16]}
</code></pre>
<p>在我的代码中,我首先用空列表初始化字典,然后迭代(按键的顺序)以附加列表中的每个项。</p>
<pre><code>my_dict = dict.fromkeys(keys, [])
for row in data:
for i, k in zip(row, keys):
my_dict[k].<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>(i)
</code></pre>
<p>但没用。它构建了这本词典:</p>
<pre><code>{'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]}
</code></pre>
<p>您可以看到所有元素都在所有列表中,而不是每个列表中只有四个元素。如果我在循环中打印I,k,它将执行正确的项和键对。所以我想问题是当我在k键的列表中添加I项时</p>
<p>有人知道为什么所有的元素都被添加到所有的列表中,还有什么是构建我的字典的正确方法吗?</p>
<p>提前谢谢</p>