python - append 到 Python 中的列表 : adds last element every time?

标签 python list append

我想将字典 append 到列表中,但得到的结果不是我想要的。

我的代码:

records=[]
record={}
for i in range(0,2):
  record['a']=i  
  for j in range (0,2):
    record['b']=j
    records.append(record)
print records 

我预计:

[{'a': 0, 'b': 0}, {'a': 0, 'b': 1}, {'a': 1, 'b': 0}, {'a': 1, 'b': 1}]

我得到的是:

[{'a': 1, 'b': 1}, {'a': 1, 'b': 1}, {'a': 1, 'b': 1}, {'a': 1, 'b': 1}]

为什么每次只添加最后一个元素?

最佳答案

您正在重复使用和添加一个字典。如果您想要单独的词典,请每次都 append 一个副本:

records = []
record = {}
for i in range(2):
    record['a'] = i  
    for j in range(2):
        record['b'] = j
        records.append(record.copy())

或者每次都新建一个字典:

records = []
for i in range(2):
    for j in range(2):
        record = {'a': i, 'b': j}
        records.append(record)

后一种方法适用于转换为列表理解:

records = [{'a': i, 'b': j} for i in range(2) for j in range(2)]

关于python - append 到 Python 中的列表 : adds last element every time?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32057828/

相关文章:

python - 如何hstack numpy记录数组?

python - 为什么 seaborn Heatmap 显示白色的行和列?

python - 如何在 Python 中将混合数据类型列表转换为数据框

Python 列表 : Appending a string and removing ALL quotations

python - "print >>"在 python 中做了什么?

python - libsvm的grid.py输出错误

c# - 我如何获得 C# 中两个列表的差异?

c# - 检查对象列表是否包含具有特定值的属性

javascript - 使用 php 将 append javascript 中的值 POST 提交到 mysql

jquery - 从当前 url 添加/删除 anchor 名称而不刷新