Я изучаю программирование на Python 3, и у меня возникла проблема с формированием 2 для операторов внутри списка. Вот как я это сделал:
items = {
"Iphone X": {"price": 1000, "stock":10},
"Samsung S9": {"price": 800, "stock":10},
"Huawei P20": {"price": 600, "stock":10},
"HTC Vive": {"price": 400, "stock":10}
}
test = ["{} - {}$".format(nume, pret) for nume in items.keys() for pret in items[nume]["price"]]
print("\n".join(test))
Я не знаю, почему, когда я меняю тип items[nume]["price"]
на str
, он печатает ключ + значение, он печатает столько цифр, сколько у меня есть в моем значении.
Если я не изменю тип items[nume]["price]
, он сообщает мне TypeError: 'int' object is not iterable
.
@DeepSpace, я подумал, что мне нужно прописать 2 оператора for.
Что такое items
? Вы перебираете ключи, но ожидаете, что у него будет ключ price
?
@PatrickHaugh Я добавил их в код, извините, я думал, что уже вставил их.
Просто используйте .items()
для доступа как к ключам, так и к значениям вашего словаря.
d = {'hammer':'5', 'scewdriver':'2'}
test = ["{} - {}$".format(k, v) for k,v in d.items()]
print("\n".join(test))
Привет, @BernardL, спасибо, что нашли время ответить на мой вопрос, но, насколько я знаю, если я делаю словарь таким образом, я не смогу добавить запасы, как у меня сейчас.
@SebastianNeamtu выберите его клавишей, ["{} - {}$".format(k, v['price']) for k,v in d.items()]
Что там делает этот
,
?