私はネッドの提案を使用して、これを思いついた:
d = {
"stephane": {},
"philippe": {},
"helene": {
"hugo": {},
"jean-michel": {},
"fernand": {},
},
"gustave": {},
}
def sort_dict_as_list(d):
sorted_list = []
for k, v in sorted(d.items()):
if k:
sorted_list.append(k)
if v:
sorted_list.append(v)
return sorted_list
def sort_recursive(d):
if d:
for k, v in d.items():
d[k] = sort_recursive(v)
return sort_dict_as_list(d)
else:
return d
if __name__ == "__main__":
print sort_recursive(d)
出力
python sortit.py
['gustave', 'helene', ['fernand', 'hugo', 'jean-michel'], 'philippe', 'stephane']
私はそれを徹底的にテストしていませんが、それは出発点です。リストをデータ構造として解こうとしていたのですが、再帰関数を入れ子にしてしまい、醜くなりすぎてしまいました…ネッドの提案は本当に良かったです。