# libtmux._internal.query_list.QueryList

- **Module:** libtmux._internal.query_list
- **Package:** libtmux
- **Language:** Python
- **Kind:** class
- **Source:** https://github.com/tmux-python/libtmux/blob/38e368c11117fb4aeb2f082d552cd4f210eae06a/src/libtmux/_internal/query_list.py#L327
- **Bases:** [`list`](https://docs.python.org/3/library/stdtypes.html#list)`[`[`T`](/en/py/stable/reference/libtmux-_internal-query_list-querylist/#libtmux._internal.query_list.QueryList.type-parameter.T)`]`, [`t.Generic`](https://docs.python.org/3/library/typing.html#typing.Generic)`[`[`T`](/en/py/stable/reference/libtmux-_internal-query_list-querylist/#libtmux._internal.query_list.QueryList.type-parameter.T)`]`
- **Page:** https://libtmux.org/en/py/stable/reference/libtmux-_internal-query_list-querylist/

Filter list of object/dictionaries. For small, local datasets.

*Experimental, unstable*.

**With dictionaries**:

```python
>>> query = QueryList(
...     [
...         {
...             "place": "Largo",
...             "city": "Tampa",
...             "state": "Florida",
...             "foods": {"fruit": ["banana", "orange"], "breakfast": "cereal"},
...         },
...         {
...             "place": "Chicago suburbs",
...             "city": "Elmhurst",
...             "state": "Illinois",
...             "foods": {"fruit": ["apple", "cantelope"], "breakfast": "waffles"},
...         },
...     ]
... )
```

```python
>>> query.filter(place="Chicago suburbs")[0]['city']
'Elmhurst'
>>> query.filter(place__icontains="chicago")[0]['city']
'Elmhurst'
>>> query.filter(foods__breakfast="waffles")[0]['city']
'Elmhurst'
>>> query.filter(foods__fruit__in="cantelope")[0]['city']
'Elmhurst'
>>> query.filter(foods__fruit__in="orange")[0]['city']
'Tampa'
```

```python
>>> query.filter(foods__fruit__in="apple")
[{'place': 'Chicago suburbs',
    'city': 'Elmhurst',
    'state': 'Illinois',
    'foods':
        {'fruit': ['apple', 'cantelope'], 'breakfast': 'waffles'}}]
```

```python
>>> query.filter(foods__fruit__in="non_existent")
[]
```

**With objects**:

```python
>>> from typing import Any, Dict
>>> from dataclasses import dataclass, field
```

```python
>>> @dataclass()
... class Restaurant:
...     place: str
...     city: str
...     state: str
...     foods: Dict[str, Any]
```

```python
>>> restaurant = Restaurant(
...     place="Largo",
...     city="Tampa",
...     state="Florida",
...     foods={
...         "fruit": ["banana", "orange"], "breakfast": "cereal"
...     }
... )
```

```python
>>> restaurant
Restaurant(place='Largo',
    city='Tampa',
    state='Florida',
    foods={'fruit': ['banana', 'orange'], 'breakfast': 'cereal'})
```

```python
>>> query = QueryList([restaurant])
```

```python
>>> query.filter(foods__fruit__in="banana")
[Restaurant(place='Largo',
    city='Tampa',
    state='Florida',
    foods={'fruit': ['banana', 'orange'], 'breakfast': 'cereal'})]
```

```python
>>> query.filter(foods__fruit__in="banana")[0].city
'Tampa'
```

```python
>>> query.get(foods__fruit__in="banana").city
'Tampa'
```

**With objects (nested)**:

```python
>>> from typing import List, Optional
>>> from dataclasses import dataclass, field
```

```python
>>> @dataclass()
... class Food:
...     fruit: List[str] = field(default_factory=list)
...     breakfast: Optional[str] = None
```

```python
>>> @dataclass()
... class Restaurant:
...     place: str
...     city: str
...     state: str
...     food: Food = field(default_factory=Food)
```

```python
>>> query = QueryList([
...     Restaurant(
...         place="Largo",
...         city="Tampa",
...         state="Florida",
...         food=Food(
...             fruit=["banana", "orange"], breakfast="cereal"
...         )
...     ),
...     Restaurant(
...         place="Chicago suburbs",
...         city="Elmhurst",
...         state="Illinois",
...         food=Food(
...             fruit=["apple", "cantelope"], breakfast="waffles"
...         )
...     )
... ])
```

```python
>>> query.filter(food__fruit__in="banana")
[Restaurant(place='Largo',
    city='Tampa',
    state='Florida',
    food=Food(fruit=['banana', 'orange'], breakfast='cereal'))]
```

```python
>>> query.filter(food__fruit__in="banana")[0].city
'Tampa'
```

```python
>>> query.get(food__fruit__in="banana").city
'Tampa'
```

```python
>>> query.filter(food__breakfast="waffles")
[Restaurant(place='Chicago suburbs',
    city='Elmhurst',
    state='Illinois',
    food=Food(fruit=['apple', 'cantelope'], breakfast='waffles'))]
```

```python
>>> query.filter(food__breakfast="waffles")[0].city
'Elmhurst'
```

```python
>>> query.filter(food__breakfast="non_existent")
[]
```

## Type parameters

- `T`

## Members

### Common operations

- [`get`](/en/py/stable/reference/libtmux-_internal-query_list-querylist-get/) (method): Retrieve exactly one object.
- [`filter`](/en/py/stable/reference/libtmux-_internal-query_list-querylist-filter/) (method): Filter list of objects.

### Other members

- [`data`](/en/py/stable/reference/libtmux-_internal-query_list-querylist-data/) (attribute)
- [`items`](/en/py/stable/reference/libtmux-_internal-query_list-querylist-items/) (method)
- [`pk_key`](/en/py/stable/reference/libtmux-_internal-query_list-querylist-pk_key/) (attribute)
- [`__eq__`](/en/py/stable/reference/libtmux-_internal-query_list-querylist-__eq__/) (method)
- [`__init__`](/en/py/stable/reference/libtmux-_internal-query_list-querylist-__init__/) (method)
