Mam słownika jako:Python: elegancki sposób, aby usunąć pustych list ze słownika Pythona
default = {'a': ['alpha'], 'b': ['beta','gamma'], 'g': []}
pragnę wyeliminować puste wartości, jak:
default = {'a': ['alpha'], 'b': ['beta','gamma']}
napisałem funkcję (po przykładem znaleźć w internecie)
def remove_empty_keys(d):
for k in d.keys():
try:
if len(d[k]) < 1:
del[k]
except:
pass
return(d)
mam następujące pytania:
1- nie znalazłem błąd, dlaczego to zawsze wraca po -
remove_empty_keys(default)
{'a': ['alpha'], 'b': ['beta'], 'g': []}
2- Czy istnieje funkcja wbudowana w celu wyeliminowania/usuwać/null Brak/puste wartości ze słownika Pythona bez tworzenia kopia oryginalnego słownika?
Twoje pytanie wydaje się mieszać ideę "Brak" z pustymi listami. Utrudnia to rozumienie. –
Być może lepszym sposobem na powiedzenie byłoby "Czy istnieje funkcja eliminująca wartości fałszerstwa ze słownika" – mgilson
Twoja klauzula "wypróbuj ... z wyjątkiem" wydaje się nie mieć żadnego celu, z wyjątkiem ukrywania własnych błędów przed samym sobą. Jeśli naprawdę chcesz użyć funkcji try/except, zawsze powinieneś określać wyjątki, których się spodziewasz (w tym przypadku KeyError). W ten sposób nie będą przypadkowo ukrywać niepowiązanych błędów. Ale w tym przypadku, jeśli nie ma kodu w równoległym wątku modyfikującym "d", nigdy nie dostaniesz kluczowego błędu, ponieważ 'k' * musi * być w' d', ponieważ został zwrócony przez 'd.keys() '. –