# 84. `collection` — Tools for handling collections of elements belonging to multiple parts.

This module defines the Collection class.

class `collection.``Collection`(object_type=None)

  A collection is a set of (int,int) tuples.

  The first part of the tuple has a limited number of values and are used as the keys in a dict. The second part can have a lot of different values and is implemented as an integer array with unique values. This is e.g. used to identify a set of individual parts of one or more OpenGL actors.

  Examples:

      >>> a = Collection()
      >>> a.add(range(7),3)
      >>> a.add(range(4))
      >>> a.remove([2,4],3)
      >>> print(a)
      -1 [0 1 2 3]; 3 [0 1 3 5 6];
      >>> a.add([[2,0],[2,3],[-1,7],[3,88]])
      >>> print(a)
      -1 [0 1 2 3 7]; 2 [0 3]; 3 [ 0  1  3  5  6 88];
      >>> a[2] = [1,2,3]
      >>> print(a)
      -1 [0 1 2 3 7]; 2 [1 2 3]; 3 [ 0  1  3  5  6 88];
      >>> a[2] = []
      >>> print(a)
      -1 [0 1 2 3 7]; 3 [ 0  1  3  5  6 88];
      >>> a.set([[2,0],[2,3],[-1,7],[3,88]])
      >>> print(a)
      -1 [7]; 2 [0 3]; 3 [88];
      >>> print(a.keys())
      [-1  2  3]
      >>> print([k for k in a])
      [-1, 2, 3]
      >>> 2 in a
      True

  `add`(data, key=-1)

    Add new data to the collection.

    data can be a 2d array with (key,val) tuples or a 1-d array of values. In the latter case, the key has to be specified separately, or a default value will be used.

    data can also be another Collection, if it has the same object type.

  `set`(data, key=-1)

    Set the collection to the specified data.

    This is equivalent to clearing the corresponding keys before adding.

  `remove`(data, key=-1)

    Remove data from the collection.

  `get`(key, default=[])

    Return item with given key or default.

  `keys`()

    Return a sorted array with the keys

  `items`()

    Return an iterator over (key,value) pairs.