> ## Documentation Index
> Fetch the complete documentation index at: https://bazel-pr-29809.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# dict

dict is a built-in type representing an associative mapping or *dictionary*. A dictionary supports indexing using `d[k]` and key membership testing using `k in d`; both operations take constant time. Unfrozen dictionaries are mutable, and may be updated by assigning to `d[k]` or by calling certain methods. Dictionaries are iterable; iteration yields the sequence of keys in insertion order. Iteration order is unaffected by updating the value associated with an existing key, but is affected by removing then reinserting a key.

```
d = {0: "x", 2: "z", 1: "y"}
[k for k in d]  # [0, 2, 1]
d.pop(2)
d[0], d[2] = "a", "b"
0 in d, "a" in d  # (True, False)
[(k, v) for k, v in d.items()]  # [(0, "a"), (1, "y"), (2, "b")]
```

There are four ways to construct a dictionary:

1. A dictionary expression `{k: v, ...}` yields a new dictionary with the specified key/value entries, inserted in the order they appear in the expression. Evaluation fails if any two key expressions yield the same value.- A dictionary comprehension `{k: v for vars in seq}` yields a new dictionary into which each key/value pair is inserted in loop iteration order. Duplicates are permitted: the first insertion of a given key determines its position in the sequence, and the last determines its associated value.

   ```
   {k: v for k, v in (("a", 0), ("b", 1), ("a", 2))}  # {"a": 2, "b": 1}
   {i: 2*i for i in range(3)}  # {0: 0, 1: 2, 2: 4}
   ```

   * A call to the built-in [dict](../globals/all#dict) function returns a dictionary containing the specified entries, which are inserted in argument order, positional arguments before named. As with comprehensions, duplicate keys are permitted.- The union expression `x | y` yields a new dictionary by combining two existing dictionaries. If the two dictionaries have a key `k` in common, the right hand side dictionary's value of the key (in other words, `y[k]`) wins. The `|=` variant of the union operator modifies a dictionary in-place. Example:

     ```
     d = {"foo": "FOO", "bar": "BAR"} | {"foo": "FOO2", "baz": "BAZ"}
     # d == {"foo": "FOO2", "bar": "BAR", "baz": "BAZ"}
     d = {"a": 1, "b": 2}
     d |= {"b": 3, "c": 4}
     # d == {"a": 1, "b": 3, "c": 4}
     ```

## Members

* [clear](#clear)
* [get](#get)
* [items](#items)
* [keys](#keys)
* [pop](#pop)
* [popitem](#popitem)
* [setdefault](#setdefault)
* [update](#update)
* [values](#values)

## clear

```
None dict.clear()
```

Remove all items from the dictionary.

## get

```
unknown dict.get(key, default=None)
```

Returns the value for `key` if `key` is in the dictionary, else `default`. If `default` is not given, it defaults to `None`, so that this method never throws an error.

### Parameters

| Parameter | Description                                                                            |
| --------- | -------------------------------------------------------------------------------------- |
| `key`     | required                                                                               |
| `default` | default is `None`  The default value to use (instead of None) if the key is not found. |

## items

```
list dict.items()
```

Returns the list of key-value tuples:

```
{2: "a", 4: "b", 1: "c"}.items() == [(2, "a"), (4, "b"), (1, "c")]
```

## keys

```
list dict.keys()
```

Returns the list of keys:

```
{2: "a", 4: "b", 1: "c"}.keys() == [2, 4, 1]
```

## pop

```
unknown dict.pop(key, default=unbound)
```

Removes a `key` from the dict, and returns the associated value. If no entry with that key was found, remove nothing and return the specified `default` value; if no default value was specified, fail instead.

### Parameters

| Parameter | Description                                                 |
| --------- | ----------------------------------------------------------- |
| `key`     | required  The key.                                          |
| `default` | default is `unbound`  a default value if the key is absent. |

## popitem

```
tuple dict.popitem()
```

Remove and return the first `(key, value)` pair from the dictionary. `popitem` is useful to destructively iterate over a dictionary, as often used in set algorithms. If the dictionary is empty, the `popitem` call fails.

## setdefault

```
unknown dict.setdefault(key, default=None)
```

If `key` is in the dictionary, return its value. If not, insert key with a value of `default` and return `default`. `default` defaults to `None`.

### Parameters

| Parameter | Description                                              |
| --------- | -------------------------------------------------------- |
| `key`     | required  The key.                                       |
| `default` | default is `None`  a default value if the key is absent. |

## update

```
None dict.update(pairs=[], **kwargs)
```

Updates the dictionary first with the optional positional argument, `pairs`, then with the optional keyword arguments
If the positional argument is present, it must be a dict, iterable, or None.
If it is a dict, then its key/value pairs are inserted into this dict. If it is an iterable, it must provide a sequence of pairs (or other iterables of length 2), each of which is treated as a key/value pair to be inserted.
Each keyword argument `name=value` causes the name/value pair to be inserted into this dict.

### Parameters

| Parameter | Description                                                                                                                       |
| --------- | --------------------------------------------------------------------------------------------------------------------------------- |
| `pairs`   | default is `[]`  Either a dictionary or a list of entries. Entries must be tuples or lists with exactly two elements: key, value. |
| `kwargs`  | required  Dictionary of additional entries.                                                                                       |

## values

```
list dict.values()
```

Returns the list of values:

```
{2: "a", 4: "b", 1: "c"}.values() == ["a", "b", "c"]
```
