Damit wird eine Liste oder ein Wörterbuch (oder eine Liste von Listen oder Wörterbücher von Wörterbüchern usw.) geglättet. Es wird davon ausgegangen, dass die Werte Strings sind, und es wird ein String erstellt, der jedes Element mit einem Trennzeichen-Argument verkettet. Wenn Sie möchten, können Sie den Separator verwenden, um das Ergebnis anschließend in ein Listenobjekt aufzuteilen. Es verwendet eine Rekursion, wenn der nächste Wert eine Liste oder eine Zeichenkette ist. Mit dem Argument key geben Sie an, ob Sie die Schlüssel oder die Werte (set key to false) aus dem Dictionary-Objekt haben wollen.
def flatten_obj(n_obj, key=True, my_sep=''):
my_string = ''
if type(n_obj) == list:
for val in n_obj:
my_sep_setter = my_sep if my_string != '' else ''
if type(val) == list or type(val) == dict:
my_string += my_sep_setter + flatten_obj(val, key, my_sep)
else:
my_string += my_sep_setter + val
elif type(n_obj) == dict:
for k, v in n_obj.items():
my_sep_setter = my_sep if my_string != '' else ''
d_val = k if key else v
if type(v) == list or type(v) == dict:
my_string += my_sep_setter + flatten_obj(v, key, my_sep)
else:
my_string += my_sep_setter + d_val
elif type(n_obj) == str:
my_sep_setter = my_sep if my_string != '' else ''
my_string += my_sep_setter + n_obj
return my_string
return my_string
print(flatten_obj(['just', 'a', ['test', 'to', 'try'], 'right', 'now', ['or', 'later', 'today'],
[{'dictionary_test': 'test'}, {'dictionary_test_two': 'later_today'}, 'my power is 9000']], my_sep=', ')
erbringt:
just, a, test, to, try, right, now, or, later, today, dictionary_test, dictionary_test_two, my power is 9000