¿Cómo imprimo los pares clave-valor de un diccionario en Python?

175

Quiero generar mis pares de valores clave de un diccionario de Python como tal:

key1 \t value1
key2 \t value2

Pensé que tal vez podría hacerlo así:

for i in d:
    print d.keys(i), d.values(i)

pero obviamente no es así como funciona keys()y values()no tome una discusión.

oaklander114
fuente
posible duplicado de Python: ¿cómo imprimir la clave de un diccionario?
Mauro Baraldi

Respuestas:

325

Su código existente solo necesita un pequeño ajuste. i es la clave, por lo que solo deberías usarla:

for i in d:
    print i, d[i]

También puede obtener un iterador que contenga claves y valores. En Python 2, d.items()devuelve una lista de tuplas (clave, valor), mientras que d.iteritems()devuelve un iterador que proporciona lo mismo:

for k, v in d.iteritems():
    print k, v

En Python 3, d.items()devuelve el iterador; Para obtener una lista, debe pasar el iterador a list()usted mismo.

for k, v in d.items():
    print(k, v)
chepner
fuente
60

Una pequeña introducción al diccionario

d={'a':'apple','b':'ball'}
d.keys()  # displays all keys in list
['a','b']
d.values() # displays your values in list
['apple','ball']
d.items() # displays your pair tuple of key and value
[('a','apple'),('b','ball')

Claves de impresión, método de valores uno

for x in d.keys():
    print x +" => " + d[x]

Otro método

for key,value in d.items():
    print key + " => " + value

Puedes obtener llaves usando iter

>>> list(iter(d))
['a', 'b']

Puede obtener el valor de la clave del diccionario usando get(key, [value]):

d.get('a')
'apple'

Si la clave no está presente en el diccionario, cuando se proporciona el valor predeterminado, devolverá el valor.

d.get('c', 'Cat')
'Cat'
Adicto al alcohol
fuente
16

O, para Python 3:

for k,v in dict.items():
    print(k, v)
Patrick Beeson
fuente
9

El diccionario:

d={'key1':'value1','key2':'value2','key3':'value3'}

Otra solución de una línea:

print(*d.items(), sep='\n')

Salida:

('key1', 'value1')
('key2', 'value2')
('key3', 'value3')

(pero, dado que nadie ha sugerido algo como esto antes, sospecho que no es una buena práctica)

Nara Begnini
fuente
1
¡Creo que esta definitivamente debería ser una respuesta más aceptada! ... siento que esta respuesta demuestra el tipo de potencia en Python que se ignora en su mayoría ... también puede hacer lo siguiente para deshacerse del '()' ... print(*[f"{': '.join(map(str,v))}" for i,v in enumerate(list(d.items()))], sep='\n')... o puede hacer lo siguiente para imprima convenientemente los números de índice tambiénprint(*[f"[{i}] {': '.join(map(str,v))}" for i,v in enumerate(list(d.items()))], sep='\n')
invernadero
4
for key, value in d.iteritems():
    print key, '\t', value
Mauro Baraldi
fuente
4

Puede acceder a sus claves y / o valores llamando a los elementos () en su diccionario.

for key, value in d.iteritems():
    print(key, value)
goulon
fuente
1
dijiste items()en la primera línea de tu texto y en el código que pusiste iteritems(). En python3x, la forma correcta es dict.items()como dijiste primero.
Joel Carneiro
3

Si desea ordenar la salida por clave dict, puede usar el paquete de colección .

import collections
for k, v in collections.OrderedDict(sorted(d.items())).items():
    print(k, v)

Funciona en python 3

paolof89
fuente
2
>>> d={'a':1,'b':2,'c':3}
>>> for kv in d.items():
...     print kv[0],'\t',kv[1]
... 
a   1
c   3
b   2
Irshad Bhat
fuente
1

Además de las formas ya mencionadas ... puede usar '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]

O

>>> list(d.iteritems())
[(320, 1), (321, 0), (322, 3)]
>>> list(d.iterkeys())
[320, 321, 322]
>>> list(d.itervalues())
[1, 0, 3]

o usando itemgetter

>>> from operator import itemgetter
>>> map(itemgetter(0), dd.items())     ####  for keys
['323', '332']
>>> map(itemgetter(1), dd.items())     ####  for values
['3323', 232]
SuperNova
fuente
0

Un diccionario simple:

x = {'X':"yes", 'Y':"no", 'Z':"ok"}

Para imprimir un par específico (clave, valor) en Python 3 (par en el índice 1 en este ejemplo):

for e in range(len(x)):
    print(([x for x in x.keys()][e], [x for x in x.values()][e]))

Salida:

('X', 'yes')
('Y', 'no')
('Z', 'ok')

Aquí hay una solución de una línea para imprimir todos los pares en una tupla:

print(tuple(([x for x in x.keys()][i], [x for x in x.values()][i]) for i in range(len(x))))

Salida:

(('X', 'yes'), ('Y', 'no'), ('Z', 'ok'))
Fouad Boukredine
fuente