# Item Sorted Dictionary Recipe

class sortedcollections.ItemSortedDict(*args, **kwargs)

  Sorted dictionary with key-function support for item pairs.

  Requires key function callable specified as the first argument. The callable must accept two arguments, key and value, and return a value used to determine the sort order. For example:

      def multiply(key, value):
          return key * value
      mapping = ItemSortedDict(multiply, [(3, 2), (4, 1), (2, 5)])
      list(mapping) == [4, 3, 2]

  Above, the key/value item pairs are ordered by `key * value` according to the callable given as the first argument.

  __copy__()

    Return shallow copy of the mapping.

  __delitem__(key)

    `del mapping[key]`

  __init__(*args, **kwargs)

    Initialize sorted dict instance.

    Optional key-function argument defines a callable that, like the key argument to the built-in sorted function, extracts a comparison key from each dictionary key. If no function is specified, the default compares the dictionary keys directly. The key-function argument must be provided as a positional argument and must come before all other arguments.

    Optional iterable argument provides an initial sequence of pairs to initialize the sorted dict. Each pair in the sequence defines the key and corresponding value. If a key is seen more than once, the last value associated with it is stored in the new sorted dict.

    Optional mapping argument provides an initial mapping of items to initialize the sorted dict.

    If keyword arguments are given, the keywords themselves, with their associated values, are added as items to the dictionary. If a key is specified both in the positional argument and as a keyword argument, the value associated with the keyword is stored in the sorted dict.

    Sorted dict keys must be hashable, per the requirement for Python’s dictionaries. Keys (or the result of the key-function) must also be comparable, per the requirement for sorted lists.

        >>> d = {'alpha': 1, 'beta': 2}
        >>> SortedDict([('alpha', 1), ('beta', 2)]) == d
        True
        >>> SortedDict({'alpha': 1, 'beta': 2}) == d
        True
        >>> SortedDict(alpha=1, beta=2) == d
        True

  __setitem__(key, value)

    `mapping[key] = value`

  copy()

    Return shallow copy of the mapping.