2015-06-26 2 views
1

Я хотел бы обновить словарем элементы в цикле, вот что у меня есть:Обновление словаря предметов с для цикла

>>> d = {} 
>>> for i in range(0,5): 
...  d.update({"result": i}) 
>>> d 
{'result': 4} 

Но я хочу д иметь следующие пункты:

{'result': 0,'result': 1,'result': 2,'result': 3,'result': 4} 
+3

dicts должны иметь уникальные ключи, ваша идея просто не будет работать – EdChum

+0

Like EdChum было сказано выше, это не будет работать в словаре. По какой причине вы хотите, чтобы это произошло? Может быть лучшая структура данных для ваших нужд ?! – sw123456

ответ

1

Как уже упоминалось, вся идея словарей заключается в том, что у них есть уникальные ключи. Что вы можете сделать, это указать 'result' в качестве ключа и list в качестве значения, а затем сохранить его в списке.

>>> d = {} 
>>> for i in range(0,5): 
...  d.setdefault('result', []) 
...  d['result'].append(i) 
>>> d 
{'result': [0, 1, 2, 3, 4]} 
0

Ключи должны быть уникальными в словаре, поэтому то, чего вы пытаетесь достичь, невозможно. Когда вы назначаете другой элемент с тем же ключом, вы преследуете предыдущую запись, следовательно, результат, который вы видите.

Возможно, вам это было бы полезно?

>>> d = {} 
>>> for i in range(3): 
...  d['result_' + str(i)] = i 
>>> d 
{'result_0': 0, 'result_1': 1, 'result_2': 2} 

Вы можете изменить это в соответствии с вашими потребностями.

1

PHA в словаре ключ не может быть таким же: р в вашем примере

{'result': 0,'result': 1,'result': 2,'result': 3,'result': 4} 

вы можете использовать список multiplw Dict:

[{},{},{},{}] 
1

Вы не можете иметь различные значения для тот же ключ в вашем словаре. Одним из вариантов было бы сосчитать результат:

d = {} 
for i in range(0,5): 
    result = 'result' + str(i) 
    d[result] = i 
d 
>>> {'result0': 0, 'result1': 1, 'result4': 4, 'result2': 2, 'result3': 3} 
Смежные вопросы