Я работаю над анализом зависимостей текстовых данных, и мой алгоритм использует API от http://framenet.icsi.berkeley.edu. Я получаю данные в виде словарей, и значения либо пустые, либо массив словарей, которые снова имеютеще несколько словарей в их значениях.
Этот код - то, что я использовал, чтобы углубиться в словарь на несколько шагов.
keylist = parsed_tree.keys()
vallist = parsed_tree.values()
print(keylist)
print(vallist)
print("----------")
for k in vallist:
for m in k:
for l in m:
print(l)
print(m.values())
print("/")
dict_keys([(3, 'ROOT', 'S')])
dict_values([[{(1, 'det', 'L'): []}, {(2, 'compound', 'L'): []}, {(6, 'nmod', 'R'): [{(4, 'case', 'L'): []}, {(5, 'det', 'L'): []}, {(9, 'nmod', 'R'): [{(7, 'case', 'L'): []}, {(8, 'amod', 'L'): []}, {(11, 'dep', 'R'): [{(10, 'det', 'L'): []}, {(13, 'nmod', 'R'): [{(12, 'case', 'L'): []}, {(14, 'cc', 'R'): []}, {(15, 'conj', 'R'): []}]}]}]}]}, {(16, 'punct', 'R'): []}]])
----------
(1, 'det', 'L')
dict_values([[]])
/
(2, 'compound', 'L')
dict_values([[]])
/
(6, 'nmod', 'R')
dict_values([[{(4, 'case', 'L'): []}, {(5, 'det', 'L'): []}, {(9, 'nmod', 'R'): [{(7, 'case', 'L'): []}, {(8, 'amod', 'L'): []}, {(11, 'dep', 'R'): [{(10, 'det', 'L'): []}, {(13, 'nmod', 'R'): [{(12, 'case', 'L'): []}, {(14, 'cc', 'R'): []}, {(15, 'conj', 'R'): []}]}]}]}]])
/
(16, 'punct', 'R')
dict_values([[]])
/
Посмотрите на: (6, 'nmod', 'R') Его значения больше словари.Как мне написать общую функцию для полного удаления словаря и его значений?
Редактировать: Итак, из ответа здесь я мог бы получить все узлыэто дерево, но в кортежах нам нужно добавить корневой узел для всех узлов.
Мы получили это от https://stackoverflow.com/a/54457756/10398679:
(3, 'ROOT', 'S')
(1, 'det', 'L')
(2, 'compound', 'L')
(6, 'nmod', 'R')
(4, 'case', 'L')
(5, 'det', 'L')
(9, 'nmod', 'R')
(7, 'case', 'L')
(8, 'amod', 'L')
(11, 'dep', 'R')
(10, 'det', 'L')
(13, 'nmod', 'R')
(12, 'case', 'L')
(14, 'cc', 'R')
(15, 'conj', 'R')
(16, 'punct', 'R')
Так новокортеж должен выглядеть так:
(1, 'det', 'L', 3)
# In this tuple, 3 is the root node