Как я могу решить ошибку индексов списка в python? Я не могу этого понять

#python #python-3.x #list #dictionary

#python #python-3.x #Список #словарь

Вопрос:

   my_goods= [
  {"name": "shirt", "cost_price": 32.67, "sell_price": 45.00, "inventory": 1200},
  {"name": "ball", "cost_price": 225.89, "sell_price": 550.00, "inventory": 100},
  {"name": "dumbbell", "cost_price": 2.77, "sell_price": 7.95, "inventory": 8500}
          ]

  print(my_goods["name"])
  

это ошибка:
print(my_goods[«name»])
Ошибка типа: индексы списка должны быть целыми числами или фрагментами, а не str

Комментарии:

1. Что вы ожидаете my_goods["name"] оценить?

2. my_goods это список. my_goods["name"] пытается индексировать его с помощью строки. Это не имеет смысла, потому что списки индексируются целыми числами (или фрагментами), а не строками.

3. Что вы пытаетесь сделать? Вложенный словарь? my_goods[i]["name"] работает для любого целого i числа, потому что это список словарей.

Ответ №1:

Ваша переменная my_goods — это list of dictionary . Список не позволяет использовать ключи для доступа к элементам, вы должны использовать целое число. Словарь позволяет вам получить к нему доступ с помощью ключа и получить значение, присвоенное этому ключу.

     print(type(my_goods))     # Returns <class 'list'>
    print(type(my_goods[0]))  # Returns <class 'dict'>
  

Если вы хотите получить значение name , вы должны сделать это так:

     print(my_goods[0]["name"])   # Return shirt
  

Вы можете выполнить итерацию по списку следующим образом:

 for x in my_goods:
    print(x['name'])
#OUTPUT 1: shirt
#OUTPUT 2: ball
#OUTPUT 3: dumbbell
  

В этом случае вы печатаете значение ключа для каждого словаря.

Комментарии:

1. Привет @Mahdi если этот или любой другой ответ решил ваш вопрос, пожалуйста, подумайте о том, чтобы принять его , установив флажок. Это указывает более широкому сообществу, что вы нашли решение, и дает некоторую репутацию как ответчику, так и вам. Нет никаких обязательств делать это.

Ответ №2:

my_goods — это список словарей, а не словарь.

Попробуйте print(my_goods[0]["name"]) напечатать «рубашку», например. Перебрав индексы списка, вы можете напечатать значения, соответствующие ключу ‘name’ во всех словарях.