Вы можете использовать итерируемые инструменты, чтобы написать это. Не все слишком читабельно, но это работает. Определенно было весело писать!
from itertools import chain
nameranges = ['A', '100-160', 'B', '200-500', 'C', '800-1500', 'D', '1600-2000',
'E', '2500-3000']
values = [150, 600, 900, 1700, 2400]
z = zip(nameranges[0::2], ( map(int, x.split("-")) for x in nameranges[1::2]))
f = list(chain(* (map(lambda x, y: (x[0][0], x[1][0], x[1][1], y)
if x[1][0]<=y<=x[1][1] else (x[0], x[1][0], x[1][1]),
z, values))))
# print f
#['A', 100, 160, 150, 'B', 200, 500, 'C', 800, 1500, 900, 'D', 1600, 2000, 1700,
# 'E', 2500, 3000]