У меня есть код, который использует класс NestedDict здесь: How can I access a deeply nested dictionary using tuples?. «У меня есть полностью рабочий пример, основанный на ответе @ JCash:«Как удалить из артерального глубоко вложенного словаря
Есть две вещи, которые я хотел бы сделать с этим, что вызывает у меня проблемы. Во-первых, я хотел бы удалить один из его элементов, если значение этого элемента равно нулю. во-вторых, если элемент является пустым словарем, потому что все записи этого словаря были удалены, я хотел бы удалить пустой словарь.
Использование класса расположены выше, примером может служить следующее:
my_tuple = (0, 1, 0, 0, 0, 1, 0, 0)
d = NestedDict()
print d
d[my_tuple] = 4
print d
#del d[my_tuple]
del d[0][1][0][0][0][1][0][0]
del d[0][1][0][0][0][1][0]
del d[0][1][0][0][0][1]
del d[0][1][0][0][0]
del d[0][1][0][0]
del d[0][1][0]
del d[0][1]
del d[0]
print d
Длинный список дель является необходимым для того, чтобы избавиться от нескольких уровней вложенности. закомментированный оператор del (который дает ошибку ключа) - это то, что я хотел бы реализовать, с кортежем произвольной длины.
Удаление промежуточных уровней не должно быть затруднено, как только я выясню, как удалить первый. Я уже знаю, что хочу удалить, и я могу проверить пустые словари с помощью: if (словарная запись) == {})
Любые идеи?
Edit: Выход:
{}
{0: {1: {0: {0: {0: {1: {0: {0: 4}}}}}}}}
{}
Пожалуйста размещаете выход 'печати d' – inspectorG4dget
Я думаю, что это должно быть, просто не конечно, как, в этом случае. – juggler
, если вы просто 'del d [0]', он удалит все вложенное в 'd [0]' ... – roippi