У меня есть несколько вложенных списков, которые являются перестановками друг друга в подсписках:
x = [
['a', [['b', 'c', [['e', 'd']]]]],
['a', [['b', [['e', 'd']], 'c']]],
[[['b', 'c', [['e', 'd']]]], 'a'],
['a', [[[['d', 'e']], 'c', 'b']]],
['a', [['b', [['d', 'e']], 'c']]]
]
Я хочу выбрать только те, которые соответствуют этому требованию: если подсписки содержат элемент 'd' или 'b 'в нем, он должен иметь индекс 0 в этом подсписке. Таким образом, среди списков в x должен быть выбран только
['a', [['b', [['d', 'e']], 'c']]]
, потому что 'd' имеет индекс 0 в своем подсписке и в то же время 'b' имеет индекс 0 в своем подсписке. Я попробовал эту функцию:
def limitation(root, nested):
result = []
for i in nested:
if isinstance(i, list):
return limitation(root, i)
else:
if (i in ['d', 'b'] and nested.index(i) == 0):
return root
for i in x:
print(limitation(i, i))
Но вывод был такой:
['a', [['b', 'c', [['e', 'd']]]]]
['a', [['b', [['e', 'd']], 'c']]]
[[['b', 'c', [['e', 'd']]]], 'a']
['a', [[[['d', 'e']], 'c', 'b']]]
['a', [['b', [['d', 'e']], 'c']]]
Так что он не учел, что и 'd', и 'b' должны иметь индекс 0 тамподсписки. Не могли бы вы помочь мне исправить это?