od = OrderedDict()
for ele in chain(name, occupation):
    od.setdefault(ele[0], []).extend(ele[1:])
print([([k] + val) for k, val in list(od.items())])
[[9, 'John', 'Smith', 'Builder'], [11, 'Bob', 'Dobbs', 'Baker'], [14, 'Joe',
    'Bloggs', 'Candlestick Maker']]
Объединить списки по значению