Python ключ печати словарей (OrderedDict) в списке withloop


Я пытаюсь понять, как напечатать список, storeItems, который содержит 3 OrderedDict(), и быть в состоянии напечатать key и value для каждого OrderedDict. Я не знаю, как решить эту проблему, и это то, что я пытался, что дает мне TypeError: string indices must be integers.

storeItems = [{}, {}, {}]
storeItems[0] = OrderedDict()
storeItems[1] = OrderedDict()
storeItems[2] = OrderedDict()

storeItems[0]['Name'] = 'Auto-Enter'
storeItems[0]['Price'] = 30
storeItems[0]['Max'] = 100

storeItems[1]['Name'] = 'Multiplier'
storeItems[1]['Price'] = 100
storeItems[1]['Max'] = 5

storeItems[2]['Name'] = 'Factory'
storeItems[2]['Price'] = 100
storeItems[2]['Max'] = 3

#the original layout of the storeItems

#storeItems = [{
#        "Name": "Auto-Enter",
#        "Price": 30,
#        "Max": 100
#    }, {
#        "Name": "Multiplier",
#        "Price": 100,
#        "Max": 5
#    }, {
#        "Name": "Factory",
#        "Price": 200,
#        "Max": 3
#    }]
i = 0
for value in storeItems:
    for key in value:
        for i in range(0, 2):
            print(storeItems[i][key], storeItems[i][key][value])

Что следует отметить

Я обнаружил, что doing for value in storeItems: print(value) будет печатать OrderedDict([('Name': 'Auto-Enter', ...)]) для каждой строки. print(storeItems[0]['Name']) выходы Auto-Enter. Я, кажется, изо всех сил пытаюсь сделать это в петлю.

Я предпочитаю, чтобы это было как можно ближе к исходному формату storeItems

1 2

1 ответ:

Каждый элемент в storeItems является словарем (OrderedDict - это просто подкласс, который отслеживает порядок вставки), поэтому просто замкните цикл над dict.items() Метод :

for odict in storeItems:
    for key, value in odict.items():
        print(key, value)