Questo è piuttosto semplice, ma mi piacerebbe un modo carino e pitonioso di farlo. Fondamentalmente, dato un dizionario, restituire il sottodictionary che contiene solo quelle chiavi che iniziano con una determinata stringa.Affettare un dizionario con i tasti che iniziano con una certa stringa
» d = {'Apple': 1, 'Banana': 9, 'Carrot': 6, 'Baboon': 3, 'Duck': 8, 'Baby': 2}
» print slice(d, 'Ba')
{'Banana': 9, 'Baby': 2, 'Baboon': 3}
Questo è abbastanza semplice da fare con una funzione:
def slice(sourcedict, string):
newdict = {}
for key in sourcedict.keys():
if key.startswith(string):
newdict[key] = sourcedict[key]
return newdict
Ma sicuramente c'è una, più intelligente, la soluzione più leggibile più bello? Potrebbe un generatore aiutare qui? (Non ho mai abbastanza opportunità per usarli).
non fare il codice python oscura solo perché è possibile. L'intera idea di Python è la leggibilità. Se hai solo bisogno di potere oscuro, usa Perl. – user3181121
Vedere anche http://pythoncentral.io/how-to-slice-custom-objects-classes-in-python/, è possibile personalizzare '__getitem__' nel proprio tipo/sottoclasse di dict. – bjd2385