Вы не можете применить регулярное выражение к списку. Вы могли бы перевести список в строку с помощью str
, а , затем применить регулярное выражение, но вы, вероятно, не должны. *)
Intead, Я предлагаю рекурсивную функцию для сглаживания списка, а также итерацию как ключей, так и значений в любых вложенных словарях и рекурсивное обращение к любым вложенным спискам, наборам, кортежам или диктофонам.
def unpack(seq):
if isinstance(seq, (list, tuple, set)):
yield from (x for y in seq for x in unpack(y))
elif isinstance(seq, dict):
yield from (x for item in seq.items() for y in item for x in unpack(y))
else:
yield seq
lst = [None, [1, ({2, 3}, {'foo': 'bar'})]]
print(list(unpack(lst)))
# [None, 1, 2, 3, 'foo', 'bar']
Обновление: Для Python 2.x замените yield from (...)
на for x in (...): yield x
или непосредственно return
списками вместо использования генератора для элементов yield
:
def unpack(seq):
if isinstance(seq, (list, tuple, set)):
return [x for y in seq for x in unpack(y)]
elif isinstance(seq, dict):
return [x for item in seq.items() for y in item for x in unpack(y)]
else:
return [seq]
*) Поскольку вы спросил: что, если числа содержат точку, или строки содержат ... ну, что-нибудь? Кроме того, вам нужно будет воссоздать реальные объекты с их соответствующим типом (например, int
) из согласованных строк. И что если список содержит объекты, отличные от строк или чисел, которые не могут быть легко воссозданы из их строкового представления?
Удалите @MapsId
из GroupEntity
По умолчанию объекты отображаются по идентификаторам. Ваш GroupEntity
должен выглядеть так.
public class GroupEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, unique = true)
private String name;
@OneToMany(mappedBy = "group")
private List<ChildEntity> children;
//FK z tablicy users
@OneToOne
UserEntity user;
.
.
.
}