Python dictionnaire création d'erreur

Je suis en train de créer un dictionnaire Python à partir d'un stockées liste. Cette première méthode est la

>>> myList = []
>>> myList.append('Prop1')
>>> myList.append('Prop2')
>>> myDict = dict([myList])

Toutefois, la méthode suivante ne fonctionne pas

>>> myList2 = ['Prop1','Prop2','Prop3','Prop4']
>>> myDict2 = dict([myList2])
ValueError: dictionary update sequence element #0 has length 3; 2 is required

Alors je me demande pourquoi la première méthode utilisant append fonctionne, mais la deuxième méthode ne fonctionne pas? Est-il une différence entre myList et myList2?

Modifier

Vérifié à nouveau myList2 a fait plus de deux éléments. Mis à jour deuxième exemple pour tenir compte de cela.

  • "Est-il une différence entre maliste et myList2?" Ce n' myList == myList2 dire? Ces deux méthodes de travail pour moi avec Python 2.5.
  • Je ne vois pas cette erreur soit avec 2.5.2 ou 3.1.1 - sûr il n'y a pas une faute de frappe quelque part? Ces listes doivent être identiques.
  • il fonctionne pour moi sur Python 2.6.2
  • Fonctionne pour moi sur 2,6
  • Ils travaillent tous les deux pour moi. Je suppose que dans le deuxième exemple, vous n'avez pas vraiment le type de crochets dans dict([mylist2]). Êtes-vous sûr de ne pas écrire dict(mylist2)?
  • La 2e méthode a bien fonctionné pour moi sur les deux systèmes. On court 2.4.3 et les autres 2.6. J'ai essayé de chercher des bugs sur le Python.org les pages, mais pour une raison quelconque, le lien sur le Python de la page de l'outil de suivi ne fonctionne pas pour moi.
  • Comme d'autres l'ont dit, votre code affiché doit travailler. Mais la façon dont vous êtes le remplissage de myList et de l'utiliser dans la dict() constructeur implique que vous êtes en train de faire quelque chose de mal avec elle, et l'erreur que vous obtenez soutient que cette implication. Le plus probable questions que myList2 a plus de deux éléments, ou que vous n'êtes pas d'emballage myList2 dans un autre objet iterable lorsque vous passez à dict(). L'un de ces pourrait être résolu si vous avez utilisé un 2-tuple au lieu d'une liste ici, puisque c'est une meilleure structure pour représenter une paire clé-valeur.
  • Ah oui, comme je le soupçonnais, vous êtes à l'aide de myList2 comme un objectif général de liste. C'est incorrect -- que vous l'utilisez, il doit avoir exactement deux éléments (une clé et une valeur correspondante).
  • Ironie du sort, vous avez mal orthographié "dictionnaire" !!!

InformationsquelleAutor Azim | 2009-10-23