3
votes

Comment réparer "ValueError: pas assez de valeurs pour décompresser (attendu 2, obtenu 1)"

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


6 commentaires

Utilisez list.items () au lieu de list . En remarque, évitez d'utiliser list comme 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.


3 Réponses :


0
votes

Veuillez essayer avec items () pendant que vous parcourez dict

for j,i in list.items():


1 commentaires

Merci beaucoup. Je suis nouveau dans la programmation. J'apprécie vraiment votre aide.



2
votes

Vous devez utiliser list.items()

for i, j in list.items():
...


0 commentaires

0
votes

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).


0 commentaires