name: dict
long_name: Dict
since: 0.47.0
is_container: true
description: |
  Stores a mapping of strings to other objects. See [dictionaries](Syntax.md#dictionaries).

  You can also iterate over dictionaries with the [`foreach`
  statement](Syntax.md#foreach-statements).

  *(since 0.48.0)*: Dictionaries can be added (e.g. `d1 = d2 + d3` and `d1 += d2`).
  Values from the second dictionary overrides values from the first.
  *(since 0.62.0)*: Dictionary order is guaranteed to be insertion order.


methods:
- name: has_key
  returns: bool
  description: Returns `true` if the dictionary contains the key given as argument, `false` otherwise.

  posargs:
    key:
      type: str
      description: The key to query.

- name: get
  returns: any
  description: |
    returns the value for the key given as first
    argument if it is present in the dictionary, or the optional
    fallback value given as the second argument. If a single argument
    was given and the key was not found, causes a fatal error

  arg_flattening: false

  posargs:
    key:
      type: str
      description: The key to query.

  optargs:
    fallback:
      type: any
      description: Fallback value that is returned if the key is not in the [[@dict]].

- name: keys
  returns: array[str]
  description: Returns an array of keys in the dictionary, sorted in ascending order.

- name: values
  returns: array[any]
  since: 1.10.0
  description: |
    Returns an array of values in the dictionary, sorted by the
    corresponding keys in ascending order.
