Je n'ai qu'une seule paire clé-valeur dans le dictionnaire. Je veux assigner la clé à une variable .__ et sa valeur à une autre variable. J'ai essayé avec les manières ci-dessous mais j'obtiens l'erreur pour la même chose.
>>> d ={"a":1}
>>> d.items()
[('a', 1)]
>>> (k,v) = d.items()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
>>> (k, v) = list(d.items())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: need more than 1 value to unpack
Je sais que nous pouvons extraire la clé et la valeur une par une, ou par boucle et iteritems (), mais n’existe-t-il pas un moyen simple de pouvoir affecter les deux en une seule instruction?
Ajoutez un autre niveau, avec un tuple (juste la virgule):
(k, v), = d.items()
ou avec une liste:
[(k, v)] = d.items()
ou choisissez le premier élément:
k, v = d.items()[0]
Les deux premiers ont l'avantage supplémentaire de générer une exception si votre dictionnaire a plus d'une clé, et les deux fonctionnent sous Python 3, tandis que le dernier devrait être orthographié par k, v = next(iter(d.items()))
pour fonctionner.
Démo:
>>> d = {'foo': 'bar'}
>>> (k, v), = d.items()
>>> k, v
('foo', 'bar')
>>> [(k, v)] = d.items()
>>> k, v
('foo', 'bar')
>>> k, v = d.items()[0]
>>> k, v
('foo', 'bar')
>>> k, v = next(iter(d.items())) # Python 2 & 3 compatible
>>> k, v
('foo', 'bar')
items()
renvoie une liste de n-uplets ainsi:
(k,v) = d.items()[0]
>>> d = {"a":1}
>>> [(k, v)] = d.items()
>>> k
'a'
>>> v
1
Ou en utilisant next
, iter
:
>>> k, v = next(iter(d.items()))
>>> k
'a'
>>> v
1
>>>
d ={"a":1}
tu peux faire
k, v = d.keys()[0], d.values()[0]
d.keys () retournera en fait la liste de toutes les clés et d.values retournera la liste de toutes les valeurs, puisque vous avez une seule paire clé: valeur dans d, vous accéderez au premier élément de la liste des clés et des valeurs
C'est mieux si vous avez plusieurs éléments dans le dictionnaire, car il ne crée pas réellement de liste, mais donne une seule paire clé-valeur.
k, v = next(d.iteritems())
Bien sûr, si vous avez plus d'un élément dans le dictionnaire, il est impossible de savoir lequel vous allez extraire.
Tu as une liste. Vous devez indexer la liste pour accéder aux éléments.
(k,v) = d.items()[0]
En Python 3:
Réponse courte:
[(k, v)] = d.items()
ou:
(k, v) = list(d.items())[0]
ou:
(k, v), = d.items()
Longue réponse:
d.items (), fondamentalement (mais pas réellement) vous donne une liste avec un tuple, qui a 2 valeurs, qui ressemblera à ceci quand imprimé:
dict_items([('a', 1)])
Vous pouvez le convertir en liste réelle en encapsulant avec list (), ce qui donnera la valeur suivante:
[('a', 1)]