鍵をsort(key = None)関数に入れるだけで、これは機能すると思います。文字列でテストしましたが、動作するようです。onemoreobjectの構造がわかりませんでした。これは、obj1とobj2で最初にソートされました。もう1つのオブジェクトが新しい階層を表す可能性があると考えたので、各階層をリストにまとめて、同じようなオブジェクトをまとめました。
def embededsort(alist):
islist = False
temp = []
for index, obj in enumerate(alist):
if isinstance(obj,list):
islist = True
embededsort(obj)
temp.append((index,obj))
if islist:
for lists in reversed(temp):
del alist[lists[0]]
alist.sort(key=None)
for lists in temp:
alist.append(lists[1])
else:
alist.sort(key=None)
return alist
>>>l=[['obj2', 'obj1', ['child2', 'child1', ['gchild2', 'gchild1']]], ['obj22', 'obj21', ['child22', 'child21', ['gchild22', 'gchild21']]]]
>>>print(embededsort(l))
[['obj1', 'obj2', ['child1', 'child2', ['gchild1', 'gchild2']]], ['obj21', 'obj22', ['child21', 'child22', ['gchild21', 'gchild22']]]]