Size: a a a

Сообщество Python Программистов

2020 February 19

R3

Rud 356 in Сообщество Python Программистов
.get
источник

M

MDP in Сообщество Python Программистов
'dd' in b ? и так далее? Можно написать функцию, которая принимает разное количество аргментов и вызывать типо вот так :
dictpath_is_exists( b, 'dd','vv','rr','dd' ) ?
источник

V

Vladimir in Сообщество Python Программистов
get катит если только последнего ключа нет, а если посередине...
источник

R3

Rud 356 in Сообщество Python Программистов
Vladimir
get катит если только последнего ключа нет, а если посередине...
.get('dd').get('vv') ...
источник

R3

Rud 356 in Сообщество Python Программистов
А вообще можно и рекурсией пройтись
источник

R3

Rud 356 in Сообщество Python Программистов
пока есть ключи скажем в словаре - на следующий уровень, получать ключ из словаря, брать его из словаря
если None - выход
если еще есть ключи в листе - идти глубже
источник

V

Vladimir in Сообщество Python Программистов
Rud 356
.get('dd').get('vv') ...
'NoneType' object has no attribute 'get'  - это если не последний отсутствует
источник

R3

Rud 356 in Сообщество Python Программистов
Vladimir
'NoneType' object has no attribute 'get'  - это если не последний отсутствует
try except тебе в помощь
источник

M

MDP in Сообщество Python Программистов
тогда обходи) Думаю сможешь написать такую функцию?
источник

V

Vladimir in Сообщество Python Программистов
MDP
тогда обходи) Думаю сможешь написать такую функцию?
да тоже к фукнции пришел, думал есть питоноэлегантный метод для этих случаев)
источник

R3

Rud 356 in Сообщество Python Программистов
или так делать
def fking_key(dicc, keys=[]):
   val = dicc.get(keys[0])
   if val == None:
       return None
   if keys == []:
       return val
   return fking_key(val, keys[1:]
источник

M

MDP in Сообщество Python Программистов
можно без рекурсии
источник

R3

Rud 356 in Сообщество Python Программистов
Но так красиво модно и весело)
источник

V

Vladimir in Сообщество Python Программистов
ладно, спасибо, значит в одну строчку никак)
источник

R3

Rud 356 in Сообщество Python Программистов
ну, try except прост попробуй)
источник

V

Vladimir in Сообщество Python Программистов
Rud 356
ну, try except прост попробуй)
ну проще get тогда уже
источник

M

MDP in Сообщество Python Программистов
Ну блин, если делать красиво то можно например
def dictpath_is_exists( some_dict, *args ) :
   for key in args :
       if not ( key in some_dict ) :
           return False
       some_dict = some_dict[key]
   return True
источник

R3

Rud 356 in Сообщество Python Программистов
Vladimir
ну проще get тогда уже
дык ты не понял, если у тебя будет None - словишь ошибку
источник

V

Vladimir in Сообщество Python Программистов
Rud 356
дык ты не понял, если у тебя будет None - словишь ошибку
аааа, понял понял тогда, тоже вариант да
источник

V

Vladimir in Сообщество Python Программистов
MDP
Ну блин, если делать красиво то можно например
def dictpath_is_exists( some_dict, *args ) :
   for key in args :
       if not ( key in some_dict ) :
           return False
       some_dict = some_dict[key]
   return True
да покручу
источник