So initialize your list with empty values according to list2 max index. Then, fill it according to list1,list2 indexes/values tuples using zip as you did in your attempt.
list1 = ['111', '333', '555', '777', '8888']
list2 = [1, 5, 56, 44, 2]
rows_to_write = [[""] for _ in range(max(list2))]
for i,v in zip(list2,list1):
rows_to_write[i-1][0] = v
At this point rows_to_write is worth:
[['111'], ['8888'], [''], [''], ['333'], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], ['777'], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], [''], ['555']]
then write the rows in 1 instruction (don't append)
with open('hh1.csv', 'w',newline='') as f: # python 3
csv.writer(f).writerows(rows_to_write)
This creates a single-row "sparse" csv file. (open('hh1.csv', 'wb') as f for python 2)