# Why \`Dict("A"=\>1, "B"=\>2)\` instead \`Dict("A":1, "B":2)\`?

**URL:** <https://discourse.julialang.org/t/why-dict-a-1-b-2-instead-dict-a-1-b-2/6306>\
**Category:** General Usage\
**Tags:** dictionary\
**Created:** [October 7, 2017, 11:16am UTC](https://discourse.julialang.org/t/why-dict-a-1-b-2-instead-dict-a-1-b-2/6306 "2017-10-07T11:16:38Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![shravankumar147](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/shravankumar147/32/2109_2.png) [@shravankumar147](https://discourse.julialang.org/u/shravankumar147)\
**Post date:** [October 7, 2017, 11:16am UTC](https://discourse.julialang.org/t/why-dict-a-1-b-2-instead-dict-a-1-b-2/6306/1 "2017-10-07T11:16:38Z")

</div>

Dear DevTeam,

I saw Julia incorporated features from both Python and Matlab and I really appreciate its performance in-terms of speed.

As a python user we love writing dictionaries as {key:value}. I appreciate if you could add this convention to Julia. I have also noticed Julia have tuple like convention for dictionaries.  
Example : ` Dict([("A", 1), ("B", 2)])` .

Thank you

---

<div class="post-metadata">

**Author:** ![yuyichao](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yuyichao/32/20_2.png) [@yuyichao](https://discourse.julialang.org/u/yuyichao)\
**Post date:** [October 7, 2017, 11:38am UTC](https://discourse.julialang.org/t/why-dict-a-1-b-2-instead-dict-a-1-b-2/6306/2 "2017-10-07T11:38:33Z")

</div>

No that’s impossible since it conflicts with existing syntax.

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [October 7, 2017, 12:09pm UTC](https://discourse.julialang.org/t/why-dict-a-1-b-2-instead-dict-a-1-b-2/6306/3 "2017-10-07T12:09:45Z")

</div>

If you insist on that syntax, you can just write a function like

```julia
julia> tuples2dict(iter) = Dict(k => v for (k,v) in iter)
tuples2dict (generic function with 1 method)

julia> tuples2dict([("A", 1), ("B", 2)])
Dict{String,Int64} with 2 entries:
  "B" => 2
  "A" => 1

```

---

<div class="post-metadata">

**Author:** ![NickNack](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nicknack/32/1792_2.png) [@NickNack](https://discourse.julialang.org/u/NickNack)\
**Post date:** [October 7, 2017, 1:27pm UTC](https://discourse.julialang.org/t/why-dict-a-1-b-2-instead-dict-a-1-b-2/6306/4 "2017-10-07T13:27:35Z")

</div>

> [@shravankumar147](#):
>
> As a python user we love writing dictionaries as {key:value}. I appreciate if you could add this convention to Julia.

One of the REALLY cool things about Julia is how you can use macros to satisfy almost any of your own personal syntax whims. So, just for fun, let’s write a simple macro for this:

```julia
macro dict(expr)
    errormessage = "Usage: @dict key1:value1, key2:value2, ..."
    if typeof(expr) != Expr
        error(errormessage)
    elseif expr.head == :(:)
        expr = :($expr,)
    elseif expr.head != :tuple
        error(errormessage)
    end
    d = Dict()
    for colonitem in expr.args
        if typeof(colonitem) != Expr || colonitem.head != :(:)
            error(errormessage)
        end
        d[colonitem.args[1]] = colonitem.args[2]
    end
    d
end

```

Now you can make Dicts like this:

```julia
d = @dict "cat":3, "mouse":4, "dog":5

```

Neat huh?

---

<div class="post-metadata">

**Author:** ![shravankumar147](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/shravankumar147/32/2109_2.png) [@shravankumar147](https://discourse.julialang.org/u/shravankumar147)\
**Post date:** [October 7, 2017, 1:44pm UTC](https://discourse.julialang.org/t/why-dict-a-1-b-2-instead-dict-a-1-b-2/6306/5 "2017-10-07T13:44:11Z")

</div>

Yeah, that’s cool. Thank you 🕶

---

<div class="post-metadata">

**Author:** ![shravankumar147](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/shravankumar147/32/2109_2.png) [@shravankumar147](https://discourse.julialang.org/u/shravankumar147)\
**Post date:** [October 7, 2017, 1:47pm UTC](https://discourse.julialang.org/t/why-dict-a-1-b-2-instead-dict-a-1-b-2/6306/6 "2017-10-07T13:47:55Z")

</div>

currently Julia is installing on my Ubuntu machine, once it is done I’ll test it out and share my experiments.
