Понимание добавления в словарь - PullRequest
0 голосов
/ 19 мая 2018

Я пытаюсь добавить элементы в словарь в виде инвентарного списка:

inventory = []
item = {}

def getDetails():
    while True:
        title = input("Enter item name: ")
        if title == 'quit':
            break
        cost = input("Enter item cost: ")
        item['title'] = title  #   adding an item to a dictionary looks just like
                            #   adding an item to a list, only with a textual
                            #   key instead of the index number.
        item['cost'] = cost
        inventory.append(item)
    return inventory

details = getDetails()
print("The dict returned was: ", details)

Когда я запускаю код, вводя различные элементы и их стоимость, я получаю последний элемент, который я ввел, как всезаписи словаря:

Enter item name: vacuum cleaner

Enter item cost: 199.95

Enter item name: mug

Enter item cost: 3.95

Enter item name: clock

Enter item cost: 12.95

Enter item name: quit
The dict returned was:  [{'title': 'clock', 'cost': '12.95'}, {'title': 'clock', 'cost': '12.95'}, {'title': 'clock', 'cost': '12.95'}]

Почему не добавляется первый словарь в список, затем следующий (другой), затем следующий?

1 Ответ

0 голосов
/ 19 мая 2018

Вы продолжаете добавлять один и тот же элемент после внесения в него изменений, поэтому при печати массива вы видите несколько копий «последнего» добавленного вами элемента (на самом деле они не являются копиями; они являются отдельными ссылками на то же самое пункт).Вам необходимо каждый раз создавать новый элемент через цикл while.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...