Я пытаюсь создать музыкальное приложение, используя tkinter и python, но не могу избавиться от ошибки «ValueError: недостаточно значений для распаковки (ожидалось 2, получено 1)». Взгляните на мой код, и вы поймете, с чем я имею дело.
Механизм довольно прост, я сначала отображаю параметры песни через словарь (список), а после ввода, соответствующее значение «j» (например, если ввод равен 1, тогда j равно единице и соответствующее значение j i) сохранить как название песни и выполнить программу, воспроизведя музыку.
list = {
'1':'Say You Won t Let Go.mp3','2':'In the Jungle the mighty jungle.mp3'
}
lost = ''
print(list)
print("which one?")
this_one = int(input(''))
for j,i in list:
if j == this_one:
lost = i
Это не имеет ничего общего с tkinter
.
Возможный дубликат Перебор словарей с использованием циклов for
Еще одна (несвязанная) вещь, о которой следует знать: вы анализируете пользовательский ввод в int, но ключи в вашем словаре являются строками, поэтому они никогда не будут совпадать.
Кроме того, вся идея использования dict состоит в том, чтобы получить значение без необходимости повторения ключей. Вы можете использовать метод dict.get()
для обработки отсутствующего ключа.
Эй, Холлоуэй, спасибо. Да, я понял это прямо сейчас. Ценю твою помощь.
Пожалуйста, попробуйте с items()
, когда вы пересекаете dict
for j,i in list.items():
Спасибо большое. Я новичок в программировании. Очень ценю вашу помощь.
Вы должны использовать list.items()
for i, j in list.items():
...
Ну вот,
songs = {"1": "Say You Won t Let Go.mp3",
"2": "In the Jungle the mighty jungle.mp3"}
lost = ''
print(songs)
this_one = int(input("Which One? "))
for number, song in songs.items():
if number == this_one:
lost = song
dict.items()
возвращает кортеж из 2 объектов (ключи, значения).
Используйте
list.items()
вместоlist
. В качестве примечания избегайте использованияlist
в качестве имени переменной; он перезаписывает встроенный тип.