una tiene saber palabras palabra lista lineas letras frecuencia frase cuantas contar contador como archivo python dictionary ironpython slice

python - tiene - Cortar un diccionario por claves que comienzan con una cierta cadena



frecuencia en python (3)

Esto es bastante simple, pero me encantaría una manera bonita y pitónica de hacerlo. Básicamente, dado un diccionario, devuelve el subdiccionario que contiene solo aquellas claves que comienzan con una cierta cadena.

» d = {''Apple'': 1, ''Banana'': 9, ''Carrot'': 6, ''Baboon'': 3, ''Duck'': 8, ''Baby'': 2} » print slice(d, ''Ba'') {''Banana'': 9, ''Baby'': 2, ''Baboon'': 3}

Esto es bastante simple de hacer con una función:

def slice(sourcedict, string): newdict = {} for key in sourcedict.keys(): if key.startswith(string): newdict[key] = sourcedict[key] return newdict

Pero seguramente hay una solución más agradable, más inteligente y más legible? ¿Podría un generador ayudar aquí? (Nunca tengo suficientes oportunidades para usarlos).


En Python 3 use items() lugar:

def slicedict(d, s): return {k:v for k,v in d.items() if k.startswith(s)}


En estilo funcional:

dict(filter(lambda item: item[0].startswith(string),sourcedict.iteritems()))


Qué tal esto:

en python 2.x:

def slicedict(d, s): return {k:v for k,v in d.iteritems() if k.startswith(s)}

En python 3.x:

def slicedict(d, s): return {k:v for k,v in d.items() if k.startswith(s)}