Naveen C.
Tengo un diccionario d = {1:-0.3246, 2:-0.9185, 3:-3985, ...}
.
¿Cómo extraigo todos los valores de d
en una lista l
?
pierre bourdon
Si solo necesitas las teclas del diccionario 1
, 2
y 3
usar: your_dict.keys()
.
Si solo necesita los valores del diccionario -0.3246
, -0.9185
y -3985
usar: your_dict.values()
.
Si desea usar tanto claves como valores: your_dict.items()
que devuelve una lista de tuplas [(key1, value1), (key2, value2), ...]
.
-
Si está usando Python 3, querrá usar
list(your_dict.values())
para obtener una lista (y no un objeto dict_values).– Matías Braun
13 de mayo de 2013 a las 0:09
Usar values()
>>> d = {1:-0.3246, 2:-0.9185, 3:-3985}
>>> d.values()
<<< [-0.3246, -0.9185, -3985]
Para Python 3, necesita:
list_of_dict_values = list(dict_name.values())
-
Gracias por mencionar ese método.
list()
se necesita– Dr. Sabbir Ahmed
17 mayo 2020 a las 23:42
-
esto es obligatorio para acceder a los elementos usando índices
– Pe Dro
8 sep 2021 a las 17:11
-
De hecho,
dict_name.values().tolist
debería ser más rápido si tiene 1d Array, verifique esto aquí– Hozayfa El Rifai
23 de septiembre de 2021 a las 12:20
-
@ hozayfa-el-rifai Eso es solo para numpy.
{}.values().tolist()
no funciona–Ted Brownlow
2 de julio de 2022 a las 17:08
-
@TedBrownlow no estoy seguro de lo que estaba tratando de probar aquí, pero sí, ¡tienes razón!
– Hozayfa El Rifai
19 de septiembre de 2022 a las 9:12
Si quieres todos los valores, usa esto:
dict_name_goes_here.values()
Si quieres todas las claves, usa esto:
dict_name_goes_here.keys()
SI desea todos los elementos (tanto claves como valores), usaría esto:
dict_name_goes_here.items()
miguel dorner
Para dictados anidados, listas de dictados y dictados de dictados enumerados, … puede usar
from typing import Iterable
def get_all_values(d):
if isinstance(d, dict):
for v in d.values():
yield from get_all_values(v)
elif isinstance(d, Iterable) and not isinstance(d, str): # or list, set, ... only
for v in d:
yield from get_all_values(v)
else:
yield d
Un ejemplo:
d = {'a': 1, 'b': {'c': 2, 'd': [3, 4]}, 'e': [{'f': 5}, {'g': set([6, 7])}], 'f': 'string'}
list(get_all_values(d)) # returns [1, 2, 3, 4, 5, 6, 7, 'string']
Muchas gracias a @vicent por señalar que las cuerdas también son Iterable
! Actualicé mi respuesta en consecuencia.
PD: si, me encanta yield
. 😉
-
Esto es casi exactamente lo que estaba buscando. Tenga en cuenta que las cadenas también son iterables. En mi caso de uso, los valores en mi diccionario también eran cadenas, por lo que me encontraría con un error sobre la profundidad recursiva alcanzada. Para solucionarlo, hice “` def get_all_values(d): if isinstance(d, dict): for v in d.values(): yield from get_all_values(v) elif isinstance(d, escribiendo.Iterable) and not isinstance( d, str): # o list, set, … solo para v en d: yield from get_all_values(v) else: yield d “`
– Vicente
28 de noviembre de 2022 a las 21:06
-
Muchas gracias por señalar ese problema. ¡Tienes toda la razón! ¡Actualicé mi respuesta!
– Michael Dorner
29 de noviembre de 2022 a las 8:22
David Heffernan
Llama a values()
método en el dict.
-
Esto es casi exactamente lo que estaba buscando. Tenga en cuenta que las cadenas también son iterables. En mi caso de uso, los valores en mi diccionario también eran cadenas, por lo que me encontraría con un error sobre la profundidad recursiva alcanzada. Para solucionarlo, hice “` def get_all_values(d): if isinstance(d, dict): for v in d.values(): yield from get_all_values(v) elif isinstance(d, escribiendo.Iterable) and not isinstance( d, str): # o list, set, … solo para v en d: yield from get_all_values(v) else: yield d “`
– Vicente
28 de noviembre de 2022 a las 21:06
-
Muchas gracias por señalar ese problema. ¡Tienes toda la razón! ¡Actualicé mi respuesta!
– Michael Dorner
29 de noviembre de 2022 a las 8:22
Esteban Rauch
Si quieres todos los valores, usa esto:
dict_name_goes_here.values()