d = {
	'B': [59, 60], 
	'A': ['tg', 17], 
	'C': [60, 61], 
	'D': [57, 'tt'], 
	'E': [61, 'tg'], 
	'F': ['tt', 59],
}
 
# we build a inverted dictonnary to return the list
# the tuple of values [v1, v2] for each value v{1,2}
# {  17: [['tg', 17]],
#    57: [[57, 'tt']],
#    'tg': [['tg', 17], [61, 'tg']],
#    60: [[59, 60], [60, 61]], ... }
dico = dict()
for i in d.values():
    for j in i:
        dico[j] = dico.get(j, []) + [i]
        
print(dico)
 
# we get a piece of the list, that easy there is one instance
m = min(l := [j for i in d.values() for j in i], key=l.count) # py 3.8
print(m, l, l.count(57))
 
z = [m]
v1, v2 = dico[m][0]
v = v1 if v2 == m else v2 # we get the other value of the tuple
z.append(v)
 
while len(dico[v]) > 1: # until we a not a the end of the chain
    v1, v2 = [i for i in dico[v] if m not in i][0]
    m = v
    v = v1 if v2 == m else v2
    z.append(v)
 
print(z)