Понимание будет хорошо работать для меньших кадров:
dict((tuple((a, b)), c) for a,b,c in df.values)
#{('A', 'B'): 0.6,
# ('A', 'C'): 0.7,
# ('C', 'A'): 1.2,
# ('C', 'D'): 1.0,
# ('D', 'B'): 0.7,
# ('D', 'C'): 0.6}
Если возникают проблемы с заказом:
from collections import OrderedDict
d = OrderedDict((tuple((a, b)), c) for a,b,c in df.values)
#OrderedDict([(('A', 'B'), 0.6),
# (('A', 'C'), 0.7),
# (('C', 'D'), 1.0),
# (('C', 'A'), 1.2),
# (('D', 'B'), 0.7),
# (('D', 'C'), 0.6)])