Python не печатает полную структуру данных - PullRequest
0 голосов
/ 06 марта 2012

Итак, у меня есть файл Python, который содержит большой набор данных вложенных словарей и списков, который выглядит следующим образом:

recipes = {
    "recipe": {
        "name": "solar_panel",
        "type": "craft",
        "ingredients": {
            "input": [
                "coal_dust",
                "glass",
                "coal_dust",
                "glass",
                "coal_dust",
                "glass",
                "electronic_circuit",
                "generator",
                "electronic_circuit"
            ],
            "output": {
                "item": "solar_panel",
                "quantity": 1
            }
        }
    },
    "recipe": {
        "name": "re_battery",
        "type": "craft",
        "ingredients": {
            "input": [
                "nothing",
                "insulated_copper_cable",
                "nothing",
                "tin",
                "redstone",
                "tin",
                "tin",
                "redstone",
                "tin"
            ],
            "output": {
                "item": "re_battery",
                "quantity": 1
            }
        }
    }
}

Затем у меня есть скрипт Python, который является

import vanilla
print(vanilla.recipes)

Можно подумать, что это просто напечатает полную структуру данных, но на самом деле она печатает только последний дочерний элемент (строки 23-43 в списке).Я чувствую, что упускаю что-то очевидное здесь.

Ответы [ 2 ]

6 голосов
/ 06 марта 2012

Это потому, что ключ тот же - recipe, поэтому он сохраняет только последний элемент в словаре.

>>> {'a': 1, 'a': 2}
{'a': 2}
1 голос
/ 06 марта 2012

Существует только один дочерний элемент , поскольку каждый ключ должен быть уникальным. Если вам нужно несколько значений для ключа, вы должны поместить их в последовательность, такую ​​как список или кортеж.

...