Je veux sortir mes paires de valeurs de clé d'un dictionnaire python en tant que tel:
key1 \t value1
key2 \t value2
Je pensais que je pourrais peut-être le faire comme ça:
for i in d:
print d.keys(i), d.values(i)
mais évidemment ce n'est pas comme ça que ça marche puisque les keys()
et values()
ne prennent pas argument.
Votre code existant a juste besoin d'un petit tweak. i
est la clé, il vous suffira donc de l'utiliser:
for i in d:
print i, d[i]
Vous pouvez également obtenir un itérateur contenant à la fois des clés et des valeurs. d.items()
renvoie une liste de nuplets (clé, valeur), alors que d.iteritems()
renvoie un itérateur qui fournit le même résultat
for k, v in d.iteritems():
print k, v
En Python 3, d.items()
renvoie l'itérateur; pour obtenir une liste, vous devez passer l'itérateur à list()
vous-même.
for k, v in d.items():
print(k, v)
Une petite introduction au dictionnaire
d={'a':'Apple','b':'ball'}
d.keys() # displays all keys in list
['a','b']
d.values() # displays you values in list
['Apple','ball']
d.items() # displays you pair Tuple of key and value
[('a','Apple'),('b','ball')
touches d'impression, méthode des valeurs un
for x in d.keys():
print x +" => " + d[x]
Une autre méthode
for key,value in d.items():
print key + " => " + value
Vous pouvez obtenir des clés en utilisant iter
>>> list(iter(d))
['a', 'b']
vous pouvez obtenir la valeur de la clé du dictionnaire en utilisant get(key, [value])
:
d.get('a')
'Apple'
si key n'est pas présent dans le dictionnaire, quand la valeur par défaut sera donnée, retournera la valeur.
d.get('c', 'Cat')
'Cat'
Ou, pour Python 3:
for k,v in dict.items():
print(k, v)
for key, value in d.iteritems():
print key, '\t', value
>>> d={'a':1,'b':2,'c':3}
>>> for kv in d.items():
... print kv[0],'\t',kv[1]
...
a 1
c 3
b 2
Si vous voulez trier la sortie par clé dict, vous pouvez utiliser le paquetage collection.
import collections
for k, v in collections.OrderedDict(sorted(d.items())).items():
print(k, v)
Cela fonctionne sur Python 3
En plus des moyens déjà mentionnés .. pouvez utiliser 'viewitems', 'viewkeys', 'viewvalues'
>>> d = {320: 1, 321: 0, 322: 3}
>>> list(d.viewitems())
[(320, 1), (321, 0), (322, 3)]
>>> list(d.viewkeys())
[320, 321, 322]
>>> list(d.viewvalues())
[1, 0, 3]
Ou
>>> list(d.iteritems())
[(320, 1), (321, 0), (322, 3)]
>>> list(d.iterkeys())
[320, 321, 322]
>>> list(d.itervalues())
[1, 0, 3]
ou en utilisant itemgetter
>>> from operator import itemgetter
>>> map(itemgetter(0), dd.items()) #### for keys
['323', '332']
>>> map(itemgetter(1), dd.items()) #### for values
['3323', 232]
Vous pouvez accéder à vos clés et/ou valeurs en appelant items () sur votre dictionnaire.
for key, value in d.iteritems():
print(key, value)
Le dictionnaire:
d={'key1':'value1','key2':'value2','key3':'value3'}
Une autre solution en une ligne:
print(*d.items(), sep='\n')
Sortie:
('key1', 'value1')
('key2', 'value2')
('key3', 'value3')
(mais comme personne n’a suggéré quelque chose comme ça auparavant, je suppose que ce n’est pas une bonne pratique)
Un dictionnaire simple:
x = {'X':"yes", 'Y':"no", 'Z':"ok"}
Pour imprimer une paire spécifique (clé, valeur) en Python 3 (paire d'index 1 dans cet exemple):
for e in range(len(x)):
print(([x for x in x.keys()][e], [x for x in x.values()][e]))
Sortie:
('X', 'yes')
('Y', 'no')
('Z', 'ok')
Voici une solution en une couche pour imprimer toutes les paires d'un tuple:
print(Tuple(([x for x in x.keys()][i], [x for x in x.values()][i]) for i in range(len(x))))
Sortie:
(('X', 'yes'), ('Y', 'no'), ('Z', 'ok'))