Esto es bastante simple, pero me encantaría una forma 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.Cortar un diccionario por 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 sin duda hay una más inteligente, la solución más agradable, más fácil de leer? ¿Podría un generador ayudar aquí? (Nunca tengo suficientes oportunidades para usarlos).
no codifican pitón oscura sólo porque es posible. La idea completa de Python es la legibilidad. Si solo necesita potencia oscura, use Perl. – user3181121
También vea http://pythoncentral.io/how-to-slice-custom-objects-classes-in-python/, puede personalizar '__getitem__' en su propio tipo/subclase de dict. – bjd2385