2015-08-17 3 views
1

Я хочу добавить список в список, но результат, который я получаю, не то, что я хочу.Добавление в список в Python: добавляет последний элемент каждый раз?

Мой код:

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}] 

Почему это только добавление последнего элемента каждый раз?

ответ

8

Вы повторно используете и добавляете один единственный словарь. Если вы хотите, отдельные словари, либо добавляет копию каждый раз:

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)] 
+0

спасибо. Это разрешает эту проблему. –

Смежные вопросы