Jest to bardzo proste, ale chciałbym mieć ładny, pytonowy sposób robienia tego. Zasadniczo, biorąc pod uwagę słownik, zwróć subdictionary, który zawiera tylko te klucze, które zaczynają się od określonego ciągu.Krojenie słownika za pomocą klawiszy rozpoczynających się od określonego ciągu znaków
» d = {'Apple': 1, 'Banana': 9, 'Carrot': 6, 'Baboon': 3, 'Duck': 8, 'Baby': 2}
» print slice(d, 'Ba')
{'Banana': 9, 'Baby': 2, 'Baboon': 3}
Jest to dość proste do zrobienia z funkcją:
def slice(sourcedict, string):
newdict = {}
for key in sourcedict.keys():
if key.startswith(string):
newdict[key] = sourcedict[key]
return newdict
Ale na pewno nie jest ładniejszy, mądrzejszy, bardziej czytelne rozwiązanie? Czy generator może tu pomóc? (Nigdy nie miałem dość okazji, aby z nich skorzystać).
nie Czy niejasne kodu Pythona tylko dlatego, że jest to możliwe. Cała idea Pythona to czytelność. Jeśli potrzebujesz słabej mocy, użyj Perla. – user3181121
Zobacz także http://pythoncentral.io/how-to-slice-custom-objects-classes-in-python/, możesz dostosować '__getitem__' w swoim własnym typie/podklasie dict. – bjd2385