Ближайший эквивалент, вероятно, выглядит примерно так:
import collections
def hasher():
return collections.defaultdict(hasher)
hash = hasher()
hash['element1']['sub1']['subsub1'] = 'value1'
if 'subsub1' in hash['element1']['sub1']:
print 'found value'
Что касается того, является ли это лучшей практикой в Python, можно спорить:
hash = {}
hash['element1', 'sub1', 'subsub1'] = 'value'
if ('element1', 'sub1', 'subsub1') in hash:
print "found value"
Но это определенно работает и очень элегантно, если это подходит вам.
Основной недостаток заключается в том, что у вас нет промежуточного доступа. Вы не можете сделать:
if ('element1', 'sub1') in hash:
print "found value"
Не знаю, получу ли я согласие, но вот как я обычно объявляю словари словарей:
someObj = {
'element1': {
'sub1': {
'subsub1': 'value1'
}
}
}
Что касается проверки наличия элемента, я согласен с таким подходом:
try:
someObj['element1']['sub1']['subsub1']
except KeyError:
print('no value found')
else:
print('found value')