포인트를 직접 사전의 키로 사용할 수 있습니다 (예 :
points = [(rand(),rand()) for i in 1:100]
a_dict = [p => rand(1:10000) for p in points]
@show points[1]
@show a_dict[points[1]]
는
points[1] => (0.4374267407775083,0.32232663537074036)
a_dict[points[1]] => 4102
편집을 생산 : 질문에 대한 목록이 아니라 하나의 쌍 이상의 포인트을 요구하고있다. 하드는 질문에서 이야기하는,하지만 당신은 점의 목록을 던져 원한다면, 나는 그냥 사전을 사용하는 것입니다 hash
기능을 사용하십시오 :
julia> x = [(rand(),rand()) for i in 1:100];
julia> y = copy(x);
julia> z = [(rand(),rand()) for i in 1:100];
julia> hash(x)
0x2dd258e3af0ec93a
julia> hash(y)
0x2dd258e3af0ec93a
julia> hash(z)
0x6449b750e42e6bc6
julia> some_dict = [hash(x) => 1, hash(z) => 1]
Dict{Uint64,Int64} with 2 entries:
0x6449b750e42e6bc6 => 1
0x2dd258e3af0ec93a => 1
julia> if hash(y) in keys(some_dict)
some_dict[hash(y)] += 1
else
some_dict[hash(y)] = 1
end
julia> some_dict
Dict{Uint64,Int64} with 2 entries:
0x6449b750e42e6bc6 => 1
0x2dd258e3af0ec93a => 2
당신이 실제로 검색해야하는 경우를 점의 집합 가능성이 보인다, 그러나 무엇인지, 당신은이 줄리아에서 완벽하게 괜찮 (가변 키를 사용) (비록 즉, 키와 점의 집합으로 직접
julia> other_dict = [x=>1,z=>1]
Dict{Array{(Float64,Float64),1},Int64} with 2 entries:
[(0.6453074757765922,0.0958215… => 1
[(0.5283378708792779,0.8418390… => 1
julia> other_dict[y] += 1
2
julia> other_dict
Dict{Array{(Float64,Float64),1},Int64} with 2 entries:
[(0.6453074757765922,0.0958215… => 1
[(0.5283378708792779,0.8418390… => 2
을 사전을 사용할 수 있습니다 물론 사전에 추가 된 열쇠를 변경하면 나쁜 일이 일어날 것입니다.)
x, y 쌍을 키로 직접 사용하지 않는 이유는 무엇입니까? – rickhg12hs
원본 주석을 좀 더 명확하게 편집했습니다. 사전에 고유 한 순서쌍을 키로 사용하려고합니다. – koozdra