Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Buscar coincidencia de nombres en un diccionario Python

5 de octubre de 2014

Hola, suponiendo el siguiente diccionario:

diccionario = {
    'carro_1':'renault',
    'carro_2':'audi',
    'carro_50':'sprint',
    'camioneta':'tucson'
}

Necesito algo que me pueda almacenar en una lista todas las claves que tengan el nombre de tipo: carro_X siendo x un número; es decir, debería arrojarme una lista que contenga:

lista=['carro_1','carro_2','carro_50']

Si alguien sabe cómo, se lo agradecería mucho.


Respuestas

#1

Una forma muy elegante de conseguir lo que quieres sería utilizar el siguiente código:

diccionario = {
    'carro_1': 'renault',
    'carro_2':'audi',
    'carro_50':'sprint',
    'camioneta':'tucson'
}
 
lista = { clave for clave, valor in diccionario.items() if clave.startswith('carro_')}
 
# print lista
# set(['carro_1', 'carro_50', 'carro_2'])

Si quisieras obtener los valores en vez de las claves:

lista = { valor for clave, valor in diccionario.items() if clave.startswith('carro_')}
 
# print lista
# set(['sprint', 'renault', 'audi'])

Y si quisieras filtrar el diccionario original para crear otro diccionario sólo con los elementos que cumplan la condición indicada:

lista = { clave: valor for clave, valor in diccionario.items() if clave.startswith('carro_')}
 
# print lista
# {'carro_1': 'renault', 'carro_50': 'sprint', 'carro_2': 'audi'}

@javiereguiluz

5 octubre 2014, 19:40