def mappings_intersect(a, b):
    """
    True if `a` and `b` share a mapping.
    Mapping is a list of ((key, value), (mapping1, mapping2,...)).

    >>> mappings_intersect([(('waterway', 'riverbank'), ('mapping_waterareas',))],
    ... [(('waterway', 'riverbank'), ('mapping_waterareas',))])
    True
    >>> mappings_intersect([(('waterway', 'riverbank'), ('mapping_waterareas',))],
    ... [(('place', 'island'), ('mapping_landusage',))])
    False
    >>> mappings_intersect([(('waterway', 'riverbank'), ('mapping_waterareas',))],
    ... [(('place', 'island'), ('mapping_landusage',)),
    ...  (('waterway', 'riverbank'), ('mapping_waterareas',))])
    True
    """

    for a_key_val, a_mappings in a:
        for a_map in a_mappings:
            for b_key_val, b_mappings in b:
                for b_map in b_mappings:
                    if a_key_val == b_key_val and a_map == b_map:
                        return True

    return False