J'essaie de créer une application musicale en utilisant tkinter et python, mais je ne parviens pas à me débarrasser du bogue «ValueError: pas assez de valeurs pour décompresser (attendu 2, obtenu 1)». Jetez un œil à mon code et vous serez très clair avec ce que je traite.
Le mécanisme est assez simple, dans un premier temps, j'affiche les options de la chanson via le dictionnaire (liste), et après avoir pris l'entrée, la valeur correspondante de "j", (exemple, si l'entrée est 1 alors j est un et correspondant la valeur de j est i) à enregistrer comme nom de la chanson et à exécuter le programme en lisant la musique.
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
3 Réponses :
Veuillez essayer avec items () pendant que vous parcourez dict
for j,i in list.items():
Merci beaucoup. Je suis nouveau dans la programmation. J'apprécie vraiment votre aide.
Vous devez utiliser list.items()
for i, j in list.items(): ...
Voilà,
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 () renvoie un tuple de 2 objets, (Clés, valeurs).
Utilisez
list.items ()au lieu delist. En remarque, évitez d'utiliserlistcomme nom de variable; il écrase un type intégré.Cela n'a rien à voir avec
tkinter.Copie possible de Itération sur des dictionnaires à l'aide de boucles "for"
Une autre chose (non liée) à prendre en compte: vous analysez l'entrée utilisateur dans un int, mais les clés de votre dictionnaire sont des chaînes, donc elles ne correspondent jamais.
De plus, l'idée générale d'utiliser dict est d'obtenir la valeur sans avoir à parcourir les clés. Vous pouvez utiliser la méthode
dict.get ()pour gérer la clé manquante.Hé, Holloway, merci. Oui, je l'ai compris maintenant. Apprécier ton aide.