The {} syntax is what the Lisp world calls an "association-list" and is more general than what the Python world calls a dictionary literal/constructor syntax. In Nim {a:b,c:d, ...} is just syntactic sugar for [ (a,b), (c,d), ... ] (or @[] if you prefer a seq analogy, but it's at compile time when either seq or array lengths are "known").
This is a good in that you can use the same syntax for multiple back-end associative array implementations (like a simple sorted array, trees, alternate hash tables, etc.). In a sense the syntax is only loosely coupled to the semantics here. The cost is the slight extra verbosity of tacking on a .toTable, toSortedArray, .toBST, .toBTree or whatever which is deemed an acceptable trade off for the generality. Nim is not Python and you do have to put types/type-related things in various places.