dictutils.ops.merge_lists_by

dictutils.ops.merge_lists_by(a, b, *, key, on_conflict='prefer_right')[source]

Merge two lists by matching items on a key.

Parameters:
  • a (list[Any]) – First list (modified in place)

  • b (list[Any]) – Second list to merge from

  • key (Union[str, Callable[[Any], Any]]) – Path or function to extract matching key

  • on_conflict (str) – How to handle conflicts (“prefer_right”, “prefer_left”, “merge_dict”)

Return type:

list[Any]

Returns:

The merged list a

Example

>>> import json
>>> users1 = [{"id": 1, "name": "Alice", "role": "user"}]
>>> users2 = [
...     {"id": 1, "name": "Alice", "role": "admin"},
...     {"id": 2, "name": "Bob", "role": "user"}
... ]
>>> result = merge_lists_by(users1, users2, key="id")
>>> print(json.dumps(result, indent=4))
[
    {
        "id": 1,
        "name": "Alice",
        "role": "admin"
    },
    {
        "id": 2,
        "name": "Bob",
        "role": "user"
    }
]