Simple example with 296 names and without complicated code.
Be aware that this code will run forever if you provide unresolvable list, ie. if you lied when you said the list does not contain lots of repetitions of the same names.
For your needs, it should work.
Thank you.
import hashlib
import json
import random
mylist=[['John', 8], ['John', 8], ['John', 8], ['Mary', 7], ['Mary', 7], ['Mike', 9], ['Mike', 9],['John', 8], ['John', 8], ['Lucas', 17], ['Lucas', 17], ['Lucas', 17], ['Beatriz', 14], ['Beatriz', 14], ['Gabriela', 14], ['Gabriela', 14], ['John', 8], ['Mary', 7], ['Mary', 7], ['Mike', 9], ['Mike', 9], ['Beatriz', 14], ['Beatriz', 14], ['Gabriela', 14], ['Gabriela', 14], ['John', 8], ['Mary', 7], ['Mary', 7], ['Mike', 9], ['Mike', 9], ['Mary', 7], ['Mary', 7], ['Mike', 9], ['Mike', 9],['John', 8], ['John', 8], ['Lucas', 17],['Marcus', 8], ['Marcus', 8], ['Marcus', 8], ['Maricotas', 7], ['Maricotas', 7], ['Merlin', 9], ['Merlin', 9],['Marcus', 8], ['Marcus', 8], ['Beto', 17], ['Beto', 17], ['Beto', 17], ['Beatriz', 14], ['Beatriz', 14], ['Gabriela', 14], ['Gabriela', 14], ['Marcus', 8], ['Maricotas', 7], ['Maricotas', 7], ['Merlin', 9], ['Merlin', 9], ['Beatriz', 14], ['Beatriz', 14], ['Gabriela', 14], ['Gabriela', 14], ['Marcus', 8], ['Maricotas', 7], ['Maricotas', 7], ['Merlin', 9], ['Merlin', 9], ['Maricotas', 7], ['Maricotas', 7], ['Merlin', 9], ['Merlin', 9],['Marcus', 8], ['Marcus', 8], ['Beto', 17], ['John', 8], ['John', 8], ['John', 8], ['Mary', 7], ['Mary', 7], ['Mike', 9], ['Mike', 9],['John', 8], ['John', 8], ['Lucas', 17], ['Lucas', 17], ['Lucas', 17], ['Beatriz', 14], ['Beatriz', 14], ['Gabriela', 14], ['Gabriela', 14], ['John', 8], ['Mary', 7], ['Mary', 7], ['Mike', 9], ['Mike', 9], ['Beatriz', 14], ['Beatriz', 14], ['Gabriela', 14], ['Gabriela', 14], ['John', 8], ['Mary', 7], ['Mary', 7], ['Mike', 9], ['Mike', 9], ['Mary', 7], ['Mary', 7], ['Mike', 9], ['Mike', 9],['John', 8], ['John', 8], ['Lucas', 17],['Marcus', 8], ['Marcus', 8], ['Marcus', 8], ['Maricotas', 7], ['Maricotas', 7], ['Merlin', 9], ['Merlin', 9],['Marcus', 8], ['Marcus', 8], ['Beto', 17], ['Beto', 17], ['Beto', 17], ['Beatriz', 14], ['Beatriz', 14], ['Gabriela', 14], ['Gabriela', 14], ['Marcus', 8], ['Maricotas', 7], ['Maricotas', 7], ['Merlin', 9], ['Merlin', 9], ['Beatriz', 14], ['Beatriz', 14], ['Gabriela', 14], ['Gabriela', 14], ['Marcus', 8], ['Maricotas', 7], ['Maricotas', 7], ['Merlin', 9], ['Merlin', 9], ['Maricotas', 7], ['Maricotas', 7], ['Merlin', 9], ['Merlin', 9],['Marcus', 8], ['Marcus', 8], ['Beto', 17], ['John', 8], ['John', 8], ['John', 8], ['Mary', 7], ['Mary', 7], ['Mike', 9], ['Mike', 9],['John', 8], ['John', 8], ['Lucas', 17], ['Lucas', 17], ['Lucas', 17], ['Beatriz', 14], ['Beatriz', 14], ['Gabriela', 14], ['Gabriela', 14], ['John', 8], ['Mary', 7], ['Mary', 7], ['Mike', 9], ['Mike', 9], ['Beatriz', 14], ['Beatriz', 14], ['Gabriela', 14], ['Gabriela', 14], ['John', 8], ['Mary', 7], ['Mary', 7], ['Mike', 9], ['Mike', 9], ['Mary', 7], ['Mary', 7], ['Mike', 9], ['Mike', 9],['John', 8], ['John', 8], ['Lucas', 17],['Marcus', 8], ['Marcus', 8], ['Marcus', 8], ['Maricotas', 7], ['Maricotas', 7], ['Merlin', 9], ['Merlin', 9],['Marcus', 8], ['Marcus', 8], ['Beto', 17], ['Beto', 17], ['Beto', 17], ['Beatriz', 14], ['Beatriz', 14], ['Gabriela', 14], ['Gabriela', 14], ['Marcus', 8], ['Maricotas', 7], ['Maricotas', 7], ['Merlin', 9], ['Merlin', 9], ['Beatriz', 14], ['Beatriz', 14], ['Gabriela', 14], ['Gabriela', 14], ['Marcus', 8], ['Maricotas', 7], ['Maricotas', 7], ['Merlin', 9], ['Merlin', 9], ['Maricotas', 7], ['Maricotas', 7], ['Merlin', 9], ['Merlin', 9],['Marcus', 8], ['Marcus', 8], ['Beto', 17], ['John', 8], ['John', 8], ['John', 8], ['Mary', 7], ['Mary', 7], ['Mike', 9], ['Mike', 9],['John', 8], ['John', 8], ['Lucas', 17], ['Lucas', 17], ['Lucas', 17], ['Beatriz', 14], ['Beatriz', 14], ['Gabriela', 14], ['Gabriela', 14], ['John', 8], ['Mary', 7], ['Mary', 7], ['Mike', 9], ['Mike', 9], ['Beatriz', 14], ['Beatriz', 14], ['Gabriela', 14], ['Gabriela', 14], ['John', 8], ['Mary', 7], ['Mary', 7], ['Mike', 9], ['Mike', 9], ['Mary', 7], ['Mary', 7], ['Mike', 9], ['Mike', 9],['John', 8], ['John', 8], ['Lucas', 17],['Marcus', 8], ['Marcus', 8], ['Marcus', 8], ['Maricotas', 7], ['Maricotas', 7], ['Merlin', 9], ['Merlin', 9],['Marcus', 8], ['Marcus', 8], ['Beto', 17], ['Beto', 17], ['Beto', 17], ['Beatriz', 14], ['Beatriz', 14], ['Gabriela', 14], ['Gabriela', 14], ['Marcus', 8], ['Maricotas', 7], ['Maricotas', 7], ['Merlin', 9], ['Merlin', 9], ['Beatriz', 14], ['Beatriz', 14], ['Gabriela', 14], ['Gabriela', 14], ['Marcus', 8], ['Maricotas', 7], ['Maricotas', 7], ['Merlin', 9], ['Merlin', 9], ['Maricotas', 7], ['Maricotas', 7], ['Merlin', 9], ['Merlin', 9],['Marcus', 8], ['Marcus', 8], ['Beto', 17]]
mylen=len(mylist)
print('Old list has:' + str(mylen))
print(mylist)
data_md5 = hashlib.md5(json.dumps(mylist, sort_keys=True).encode('utf-8')).hexdigest()
print(data_md5)
previtem=['','']
endlist=[]
while mylen > 1:
myrand=random.randrange(0, mylen-1)
selected=mylist[myrand]
if selected!=previtem:
tmpitem=mylist.pop(myrand)
mylen=len(mylist)
endlist.append(selected)
previtem=selected
print('-----')
print('--Looking where to insert last item--')
for i in range(1,len(endlist)):
if (endlist[i-1]!=mylist) and (endlist[i]!=mylist):
break
endlist.insert(i, mylist)
print('New list has:' + str(len(endlist)))
print(endlist)
data_md5 = hashlib.md5(json.dumps(endlist, sort_keys=True).encode('utf-8')).hexdigest()
print(data_md5)
