К " заполните словарь онтологий только именами ключей ":
ontology = {}.fromkeys('abcd',{})
или
ontology = dict( (k,{}) for k in 'abcd')
Затем вы заполните {} каждого элемента онтологии с элементами 'a': [...] , 'b': [...] , 'c': [...]
.
Но я не вижу интереса в написании значения ontology ['a'] ['a'] как список, содержащий один уникальный элемент, который является словарем с одним уникальным элементом, имеющим всегда один и тот же ключ 'y'
Вместо записи этого значения 'a': [{'y': {'type': 'DSE', 'name': 'JHG'}}] , например, вы можете написать это 'a' :( 'DSE',' JHG ') .Зная, что первый элемент пары ('DSE', 'JHG') является типом, а второй - именем.
Вы также можете написать 'z' :('QSZA', 'IUYOIU') , зная, что first == тип, а second == имя.
Таким образом, онтология будет:
{'a': {'a':('DSE','JHG') , 'x':[...] , 'z':('QSZA','IUYOIU')} ,
'b': {'b':('dfg','tfy') , 'x':[...] , 'z':('ynyu','zertzt')} ,
'c': {'c':('noq','jek') , 'x':[...] , 'z':('frEZ','jkyukA')} ,
'd': {'d':('bqi','bif') , 'x':[...] , 'z':('kiy',';jheTri')} }
И она может дажеупростим еще больше:
{'a': (('a', 'DSE','JHG') , [...] , ('QSZA','IUYOIU')) ,
'b': (('b', 'dfg','tfy') , [...] , ('ynyu','zertzt')) ,
'c': (('c', 'noq','jek') , [...] , ('frEZ','jkyukA')) ,
'd': (('d', 'bqi','bif') , [...] , ('kiy',';jheTri')) }
Первый элемент значения онтологии всегда будет иметь стиль ('a', тип, имя), второй всегда список стиля 'x', а третийвсегда пара (тип, имя) стиля 'z'
Элементы ('a', тип, имя), [...], (тип, имя) будут доступны через позиции 0, 1, 2 вместо клавиш 'a' + 'y', 'x', 'z'