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


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)

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'


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)


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

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

for key, value in d.iteritems():
    print(key, value)

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


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

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]

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'))
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.