This is my version of one liner not needing 2.6:
x1 = {0:2, 2:1, 3:(1, 2), 20:3}
x2 = {0:2, 2:1, 3:(1, 5), 20:3}
print max(max(values) if hasattr(values,'__iter__') else values for values in x1.values())
print max(max(values) if hasattr(values,'__iter__') else values for values in x2.values())
Output:
3
5
HOWEVER I strongly suggest to go to origin of these values and change the storing of integers to singleton tuples.Then you can use cleaner code:
x1 = {0:(2,), 2:(1,), 3:(1, 2), 20:(3,)}
x2 = {0:(2,), 2:(1,), 3:(1, 5), 20:(3,)}
for x in (x1,x2):
print max(max(values) for values in x.values())