Skip to content

API reference#

earthcarekit.utils.dict

Dictionary utilities.

Notes#

This module does not depend on other internal modules.


get_first #

get_first(d: dict[A, B], keys: Sequence[A], default: None = None) -> B | None
get_first(d: dict[A, B], keys: Sequence[A], default: B) -> B
get_first(d: dict[A, B], keys: Sequence[A], default: C) -> B | C
get_first(
    d: dict[A, B], keys: Sequence[A], default: B | C | None = None
) -> B | C | None

Return the value for the first key present in the dictionary, else default.

Source code in earthcarekit/utils/dict.py
def get_first(d: dict[A, B], keys: Sequence[A], default: B | C | None = None) -> B | C | None:
    """Return the value for the first key present in the dictionary, else default."""
    for key in keys:
        if key in d:
            return d[key]
    return default

invert #

invert(d: dict[A, B]) -> dict[B, A]

Return new dictionary with keys and values swapped (assumes all unique values).

Source code in earthcarekit/utils/dict.py
def invert(d: dict[A, B]) -> dict[B, A]:
    """Return new dictionary with keys and values swapped (assumes all unique values)."""
    return {v: k for k, v in d.items()}

invert_nonunique #

invert_nonunique(d: dict[A, B]) -> dict[B, list[A]]

Return new dictionary mapping from values to lists of keys that map to it.

Source code in earthcarekit/utils/dict.py
def invert_nonunique(d: dict[A, B]) -> dict[B, list[A]]:
    """Return new dictionary mapping from values to lists of keys that map to it."""
    inv_d: dict[B, list[A]] = {}
    for k, v in d.items():
        inv_d.setdefault(v, []).append(k)
    return inv_d

remove_keys #

remove_keys(d: dict[A, B], keys: Sequence[A]) -> dict[A, B]

Return new dictionary with selected keys removed.

Source code in earthcarekit/utils/dict.py
def remove_keys(d: dict[A, B], keys: Sequence[A]) -> dict[A, B]:
    """Return new dictionary with selected keys removed."""
    d = d.copy()
    for k in keys:
        if k in d:
            del d[k]
    return d

update_if_not_none #

update_if_not_none(d: dict[A, B], updates: dict[A, B]) -> None

Update a dictionary for keys whose values are not None.

Source code in earthcarekit/utils/dict.py
def update_if_not_none(d: dict[A, B], updates: dict[A, B]) -> None:
    """Update a dictionary for keys whose values are not None."""
    d.update({k: v for k, v in updates.items() if v is not None})