I can\'t seem to find an elegant way to start from t and result in s.
>>>t = [\'a\',2,\'b\',3,\'c\',4] #magic >>>print s
Not exactly efficient, but if you don't need it for very large lists:
dict(zip(t[::2], t[1::2]))
Or your version using a generator:
dict(t[i:i+2] for i in xrange(0, len(t), 2))