A volte mi imbatto nella situazione in cui ho alcuni dati in un dict annidato con nomi di chiavi piuttosto lunghi (a volte inevitabili per un motivo o per un altro).
some_dict = {'not_too_short_key_one': {'second_lvl_key_one': 23,
'one_more_second_lvl_key': 5},
'not_too_short_key_two': {'second_lvl_key_two': 123,
'one_more_second_lvl_key': 321}}
A volte devo passare alcuni elementi del dict in alcune funzioni più di una volta:
# option 1
do_something(some_dict['not_too_short_key_one']['second_lvl_key_one'])
do_something_more(some_dict['not_too_short_key_one']['second_lvl_key_one'],
some_dict['not_too_short_key_one']['second_lvl_key_two'])
do_yet_another_thing(some_dict['not_too_short_key_one']['second_lvl_key_one',
some_dict['not_too_short_key_one']['second_lvl_key_two',
some_dict['not_too_short_key_two']['second_lvl_key_one'])
do_yet_another_thing(some_dict['not_too_short_key_one']['second_lvl_key_one',
some_dict['not_too_short_key_one']['second_lvl_key_two',
some_dict['not_too_short_key_two']['second_lvl_key_one'])
Mi chiedo se l'introduzione di variabili con il solo scopo di abbreviare le voci di dettatura abbia senso in queste situazioni. Sarebbe incoraggiato il seguente? Da un lato, rende le chiamate di singole funzioni un po 'meno prolisse e possono ridurre in modo significativo la dimensione complessiva del codice. D'altra parte, ogni variabile introdotta potrebbe cambiare e rendere quindi più difficile per un'altra persona capire come funziona il programma. Inoltre aggiunge un altro livello di riferimento indiretto per un lettore.
# option 2
item_1 = some_dict['not_too_short_key_one']['second_lvl_key_one']
item_2 = some_dict['not_too_short_key_one']['second_lvl_key_two']
item_3 = some_dict['not_too_short_key_two']['second_lvl_key_two']
do_something(item_1)
do_something_more(item_1, item_2)
do_yet_another_thing(item_1, item_2, item_3)
do_yet_another_thing(item_1, item_2, item_3)
Esiste una sorta di consenso su come affrontare questo problema (ad esempio preferisci l'opzione 1 o l'opzione 2) o forse una sorta di convenzione di denominazione per "variabili di abbreviazione" che è generalmente concordata?