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 ответ:
Каждый элемент в
storeItems
является словарем (OrderedDict
- это просто подкласс, который отслеживает порядок вставки), поэтому просто замкните цикл надdict.items()
Метод :for odict in storeItems: for key, value in odict.items(): print(key, value)