# Accessing multiple values of a dictionary

**URL:** <https://discourse.julialang.org/t/accessing-multiple-values-of-a-dictionary/8648>\
**Category:** General Usage\
**Tags:** proposal\
**Created:** [January 27, 2018, 11:05pm UTC](https://discourse.julialang.org/t/accessing-multiple-values-of-a-dictionary/8648 "2018-01-27T23:05:23Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![lucatrv](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lucatrv/32/5650_2.png) [@lucatrv](https://discourse.julialang.org/u/lucatrv)\
**Post date:** [January 27, 2018, 11:05pm UTC](https://discourse.julialang.org/t/accessing-multiple-values-of-a-dictionary/8648/1 "2018-01-27T23:05:23Z")

</div>

The only way I found to access multiple values of a dictionary is:

```julia
get.(dictionary, ["a", "b", "c"], 0)

```

I propose the following syntax:

```julia
dictionary.["a", "b", "c"]

```

---

<div class="post-metadata">

**Author:** ![StefanKarpinski](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stefankarpinski/32/24_2.png) [@StefanKarpinski](https://discourse.julialang.org/u/StefanKarpinski)\
**Post date:** [January 27, 2018, 11:09pm UTC](https://discourse.julialang.org/t/accessing-multiple-values-of-a-dictionary/8648/2 "2018-01-27T23:09:38Z")

</div>

[https://github.com/JuliaLang/julia/issues/19169](https://github.com/JuliaLang/julia/issues/19169)

There are two fairly compelling potential meanings of `x.[y]`. It’s not yet clear which one is a better choice, and we’re not really considering adding new features until 1.0 is well out the door.

---

<div class="post-metadata">

**Author:** ![NaOH](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/naoh/32/5632_2.png) [@NaOH](https://discourse.julialang.org/u/NaOH)\
**Post date:** [January 28, 2018, 9:02am UTC](https://discourse.julialang.org/t/accessing-multiple-values-of-a-dictionary/8648/3 "2018-01-28T09:02:07Z")

</div>

You could also broadcast `getindex` if you don’t need a default:

```julia
julia> dictionary = Dict(:a => 1, :b => 2, :c => 3, :d => 4)
Dict{Symbol,Int32} with 4 entries:
  :d => 4
  :a => 1
  :b => 2
  :c => 3

julia> get.(dictionary, [:a, :b, :c, :e], 0)
4-element Array{Int32,1}:
 1
 2
 3
 0

julia> @which dictionary[:d]
getindex(h::Dict{K,V}, key) where {K, V} in Base at dict.jl:473

julia> getindex.(dictionary, [:a, :b, :c])
3-element Array{Int32,1}:
 1
 2
 3

julia> getindex.(dictionary, [:a, :b, :c, :e])
ERROR: KeyError: key :e not found

```

---

<div class="post-metadata">

**Author:** ![NaOH](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/naoh/32/5632_2.png) [@NaOH](https://discourse.julialang.org/u/NaOH)\
**Post date:** [January 28, 2018, 10:19am UTC](https://discourse.julialang.org/t/accessing-multiple-values-of-a-dictionary/8648/4 "2018-01-28T10:19:38Z")

</div>

Or do something like:

```julia
julia> macro get(indexing)
           indexing.head ≠ :. && error("syntax: expected: `d.[ks...]`.")
           dict = indexing.args[1]
           indexing.args[1] = :getindex
           indexing.args[2].head = :tuple
           unshift!(indexing.args[2].args, dict)
           indexing
       end
@get (macro with 1 method)

julia> @get dictionary.[:a, :b, :c]
3-element Array{Int32,1}:
 1
 2
 3

```

Just as an example.

---

<div class="post-metadata">

**Author:** ![mroavi](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mroavi/32/8804_2.png) [@mroavi](https://discourse.julialang.org/u/mroavi)\
**Post date:** [March 10, 2021, 11:24am UTC](https://discourse.julialang.org/t/accessing-multiple-values-of-a-dictionary/8648/5 "2021-03-10T11:24:10Z")

</div>

These examples don’t seem to work in Julia 1.5. See [How can I access multiple values of a dictionary using a tuple of keys?](https://discourse.julialang.org/t/how-can-i-access-multiple-values-of-a-dictionary-using-a-tuple-of-keys/56868) for a fix.

---

<div class="post-metadata">

**Author:** ![Marcell\_Havlik](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/marcell_havlik/32/37424_2.png) [@Marcell\_Havlik](https://discourse.julialang.org/u/Marcell_Havlik)\
**Post date:** [December 17, 2022, 9:23am UTC](https://discourse.julialang.org/t/accessing-multiple-values-of-a-dictionary/8648/6 "2022-12-17T09:23:21Z")

</div>

unshift! wasn’t defined. So I recreated the funciton like this:

```julia
macro get(indexing)
	indexing.head ≠ :. && error("syntax: expected: `d.[ks...]`.")
	dict = indexing.args[1]
	indexing.args[1] = :getindex
	indexing.args[2].head = :tuple
	indexing.args[2].args = [Expr(:tuple, dict); indexing.args[2].args]
	indexing
end

```

Not sure if there isn’t a better one…
