Julia Dict 宣言・代入

# Dict 宣言・代入

- 初期値設定時にはアロー(=>)を使う
- 初期値以外は＝で代入
- 型は初期宣言で固定される
- 内包表記あり
- tupleはイテレータで使う

## 宣言方法

空宣言の場合は型宣言で説明。ここでは初期値設定アリの場合。

```julia
Dict("A"=>"test1") #アロー型

#Dict{String, String} with 1 entry:
#  "A" => "test1"
```
これはNG
```Julia
Dict(("B","test1"))
#tuple型 はイテレータの場合可能
# Error:ArgumentError: Dict(kv): kv needs to be an iterator of tuples or pairs　
```

## 型宣言
型宣言なし
```julia
typeof(Dict()) #型指定なし空宣言はany
#Dict{Any, Any}

typeof(Dict(1=>"test"))　#初期値代入時には初期値の型で決定
#Dict{Int64, String}
dict1=Dict(1=>"test")
#異なる型を代入すると型を変更するのでエラー
dict1[1]=2
 #MethodError: Cannot `convert` an object of type Int64 to an object of type String
```

型宣言あり
```julia
typeof(Dict{Int,String}()) #型指定あり空宣言
#Dict{Int64, String}

dict2=Dict{Int,Any}(1=>"test") #型指定あり初期値あり
#Dict{Int64, Any} with 1 entry:
#  1 => "test"
dict2[1]=2  #もちろんOK

dict3=Dict{Int,Dict{Int,Any}}(1=>Dict(1=>"test")) #Dictネスト
#Dict{Int64, Dict{Int64, Any}} with 1 entry:
#  1 => Dict(1=>"test")

dict3=Dict{Int,Dict{Int,Any}}() 
#Dict{Int64, Dict{Int64, Any}}()

dict4=Dict{Int,Array{Any}}(1=>[1,"3"]) #Arrayを含む場合
#Dict{Int64, Array{Any}} with 1 entry:
#  1 => [1, "3"]

```

## 代入
```julia
dic = Dict()
dic[1]="test" #アローじゃない
```

## 内包表記
```julia
dictA = Dict(i=>i+2 for i in 1:5) #OK

dictB = Dict(i=>i+2 for i in 1:5 if iseven(i)) #条件付き OK

dictC = Dict((i,i+3) for i in 1:5 if iseven(i)) #tuple型 イテレータなので可能。

#Dict{Int64, Int64} with 2 entries:
#  4 => 7
#  2 => 5

```

## 参考図書
[１から始めるプログラミング](https://amzn.to/3HHR7Yv)
<a href="https://www.amazon.co.jp/1%E3%81%8B%E3%82%89%E5%A7%8B%E3%82%81%E3%82%8B-Julia%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E9%80%B2%E8%97%A4-%E8%A3%95%E4%B9%8B/dp/433902905X?crid=2JGVUDQSK5GJQ&keywords=julia+%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E&qid=1671346628&sprefix=julia+%2Caps%2C224&sr=8-1&linkCode=li3&tag=buzz06-22&linkId=8f7deba521f52f812d35ecdbe756cc10&language=ja_JP&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=433902905X&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=buzz06-22&language=ja_JP" ></a><img src="https://ir-jp.amazon-adsystem.com/e/ir?t=buzz06-22&language=ja_JP&l=li3&o=9&a=433902905X" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

[Juliaプログラミングクックブック](https://amzn.to/3PFfb0a)
<a href="https://www.amazon.co.jp/Julia%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%82%AF%E3%83%83%E3%82%AF%E3%83%96%E3%83%83%E3%82%AF-%E2%80%95%E8%A8%80%E8%AA%9E%E4%BB%95%E6%A7%98%E3%81%8B%E3%82%89%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90%E3%80%81%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%80%81%E6%95%B0%E5%80%A4%E8%A8%88%E7%AE%97%E3%81%BE%E3%81%A7-Bogumi%C5%82-Kami%C5%84ski/dp/4873118891?crid=2JGVUDQSK5GJQ&keywords=julia+%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E&qid=1671346628&sprefix=julia+%2Caps%2C224&sr=8-2&linkCode=li3&tag=buzz06-22&linkId=4e34b4b620932164412ec18acff914a8&language=ja_JP&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4873118891&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=buzz06-22&language=ja_JP" ></a><img src="https://ir-jp.amazon-adsystem.com/e/ir?t=buzz06-22&language=ja_JP&l=li3&o=9&a=4873118891" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />

[天才プログラマー タンメイが教える Julia超入門](https://amzn.to/3FJRpeW)
<a href="https://www.amazon.co.jp/%E5%A4%A9%E6%89%8D%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%83%BC-%E3%82%BF%E3%83%B3%E3%83%A1%E3%82%A4%E3%81%8C%E6%95%99%E3%81%88%E3%82%8B-Julia%E8%B6%85%E5%85%A5%E9%96%80-Tanmay-Bakshi/dp/4807920219?crid=2JGVUDQSK5GJQ&keywords=julia+%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E&qid=1671346628&sprefix=julia+%2Caps%2C224&sr=8-10&linkCode=li3&tag=buzz06-22&linkId=bf79aa67b5c5956c8fd26f9436401dc6&language=ja_JP&ref_=as_li_ss_il" target="_blank"><img border="0" src="//ws-fe.amazon-adsystem.com/widgets/q?_encoding=UTF8&ASIN=4807920219&Format=_SL250_&ID=AsinImage&MarketPlace=JP&ServiceVersion=20070822&WS=1&tag=buzz06-22&language=ja_JP" ></a><img src="https://ir-jp.amazon-adsystem.com/e/ir?t=buzz06-22&language=ja_JP&l=li3&o=9&a=4807920219" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />