Как свернуть массив наборов в один набор, содержащий все уникальные элементы набора, следующим образом?

Array_of_sets = Set{String}[Set(["EUR", "GBP", "USD"]), Set(["AUD"])]
# do something to Array_of_sets which produces
Set{String}(["EUR", "GBP", "USD", "AUD"])

union, vcat и unique, похоже, не работают в этом случае.

2
Stuart 19 Сен 2018 в 02:14

2 ответа

Лучший ответ

Итак, наборы уже уникальны:

julia> S = Set(["a", "b"])
 Set(["b", "a"])
julia> push!(S, "a")
 Set(["b", "a"])

Следовательно, не требуется unique:

julia> A = Set{String}[Set(["EUR", "GBP", "USD"]), Set(["EUR", "AUD"])]
julia> reduce(union!, A)
 Set(["EUR", "GBP", "AUD", "USD"])
7
stillearningsomething 18 Сен 2018 в 23:28

Я бы преобразовал наборы в массивы и vcat их:

Array_of_sets = Set{String}[Set(["EUR", "GBP", "USD"]), Set(["AUD"])]
Array_of_arrays = map(collect, Array_of_sets)
Set(vcat(Array_of_arrays...))
> Set{String}(["EUR", "GBP", "USD", "AUD"])

Изменить: Но тогда я не такой умный, как @stillearningsomething

0
nbwoodward 18 Сен 2018 в 23:31