blob: 9005668ca0224da08f233fe515528e5f605342c7 [file] [log] [blame]
---
title: '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"]
```