Добавление словаря в список в aa loop Python

Я базовый программист на python, поэтому, надеюсь, ответ на мой вопрос будет легким. Я пытаюсь взять словарь и добавить его в список. Затем словарь изменяет значения, а затем снова добавляется в цикле. Кажется, что каждый раз, когда я это делаю, все словари в списке меняют свои значения в соответствии с тем, что было просто добавлено. Например:

>>> dict = {} >>> list = [] >>> for x in range(0,100): ... dict[1] = x ... list.append(dict) ... >>> print list 

Я предполагаю, что результатом будет [{1:1}, {1:2}, {1:3}... {1:98}, {1:99}] но вместо этого я получил:

 [{1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}] 

Любая помощь приветствуется.

  • Присвоить значение отдельной ячейке в двухмерном массиве python
  • Как вернуть стоимость, grad как кортеж для функции fmin_cg scipy
  • Интерполировать значения NaN в массиве numpy
  • Установка Python Tools для Visual Studio 2012 (PTVS)
  • etree Clone Node
  • Что такое безопасный способ «привязать» переменную среды в python?
  • Есть ли библиотека Python, чем может имитировать сетевой трафик с разных адресов
  • Как я могу анализировать макросы в коде C ++, используя CLANG в качестве синтаксического анализатора и Python в качестве языка сценариев?
  • 4 Solutions collect form web for “Добавление словаря в список в aa loop Python”

    Вам нужно добавить копию , иначе вы просто добавляете ссылки на один и тот же словарь снова и снова:

     yourlist.append(yourdict.copy()) 

    Я использовал yourdict и yourlist вместо dict и list ; вы не хотите маскировать встроенные типы.

    Когда вы создаете словарь adict вне цикла, вы добавляете тот же самый dict в свой список alist . Это означает, что все копии указывают на один и тот же словарь, и вы получаете последнее значение {1:99} каждый раз. Просто создайте каждый словарь внутри цикла, и теперь у вас есть 100 разных словарей.

     alist = [] for x in range(100): adict = {1:x} alist.append(adict) print(alist) 

    Вы также можете использовать zip и list comprehension, чтобы делать то, что вам нужно.

    Если вы хотите, чтобы значения dict начинались с одного range(1,100) использования range(1,100)

     l = [dict(zip([1],[x])) for x in range(1,100)] 

    Просто поставьте dict = {} внутри цикла.

     >>> dict = {} >>> list = [] >>> for x in range(0, 100): dict[1] = x list.append(dict) dict = {} >>> print list 
    Python - лучший язык программирования в мире.