小编Ale*_*Kir的帖子

在for循环中填充python字典会返回相同的值

为了项目的需要,我迭代一些数据并将所需的值添加到预制字典中.

这里是条带化的代码示例,代表我的问题:

class Parser:
    def __init__(self):
        self.records = [['value1','value2','value3'], 
                        ['value4','value5','value6'],
                        ['value7','value8','value9']]
    def get_parsed(self):
        parsed = []
        dic = {'key1': '',
               'key2': '',
               'key3': '',
               }
        for i in self.records:
            dic['key1'] = i[0]
            dic['key2'] = i[1]
            dic['key3'] = i[2]
            parsed.append(dic)
        return parsed
Run Code Online (Sandbox Code Playgroud)

我期望得到的是像这样的词典列表:

[{'key1':'value1','key2':'value2','key3':'value3'},
 {'key1':'value4','key2':'value5','key3':'value6'},
 {'key1':'value7','key2':'value8','key3':'value9'}]
Run Code Online (Sandbox Code Playgroud)

但是我得到的是:

[{'key1':'value1','key2':'value2','key3':'value3'},
 {'key1':'value1','key2':'value2','key3':'value3'},
 {'key1':'value1','key2':'value2','key3':'value3'}]
Run Code Online (Sandbox Code Playgroud)

虽然如果我将字典初始化移动到'for'循环 - 我得到了所需的结果,但我不明白为什么会发生这种情况?

编辑:问题是更多"为什么会这样发生"我在ipython中做了一些测试,这就是我所拥有的:

In [1]: d = {'a':'','b':'','c':''}

In [2]: d
Out[2]: {'a': '', 'b': '', 'c': ''}

In [3]: d['a'] = 'value'

In [4]: d['b'] = 'other_value'

In [5]: …
Run Code Online (Sandbox Code Playgroud)

python python-2.7

3
推荐指数
2
解决办法
7093
查看次数

标签 统计

python ×1

python-2.7 ×1