#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’ во всех словарях.