Two columns satisfy a "one-to-one" constraint if each value in column 1 is associated with exactly one value in column 2, and vice versa. E.g. in this data, the person column and the email column satisfy a one-to-one constraint:
>>> table = [('pablo', '[email protected]'),
('georgia', '[email protected]'),
('mark', '[email protected]')]
>>> is_one_to_one(table)
True
But if mark gets a second email account, the columns no longer satisfy a one-to-one constraint:
>>> table = [('pablo', '[email protected]'),
('georgia', '[email protected]'),
('mark', '[email protected]'),
('mark', '[email protected]')]
>>> is_one_to_one(table)
False
Similarly, if aol somehow give the same email address to two different people, the one-to-one constraint is violated:
>>> table = [('pablo', '[email protected]'),
('georgia', '[email protected]'),
('mark', '[email protected]'),
('moses', '[email protected]')]
>>> is_one_to_one(table)
False
A duplicate row doesn't violate one-to-one:
>>> table = [('pablo', '[email protected]'),
('georgia', '[email protected]'),
('mark', '[email protected]'),
('georgia', '[email protected]')]
>>> is_one_to_one(table)
True
Implement the function is_one_to_one
. It should take one argument,
a list of tuples, as in the examples above.