Первая задача - правильно отсортировать первый список. Это легко, если вы zip
объедините два списка, а затем отсортируете их по номеру строки (int-преобразованный):
>>> list1 = ['a', 'b', 'c']
>>> list2 = ['2', '1', '3']
>>> sorted(zip(list1, list2), key=lambda p: int(p[1]))
[('b', '1'), ('a', '2'), ('c', '3')]
Затем вам нужно отформатировать букву в соответствующую строку. Я бы сделал это с чем-то вроде:
'xxxx' + ''.join(char if char == letter else '-' for char in 'abc')
, так что все вместе это:
>>> for row in [
... 'xxxx' + ''.join(char if char == letter else '-' for char in 'abc')
... for letter, _line in sorted(zip(list1, list2), key=lambda p: int(p[1]))
... ]:
... print(row)
...
xxxx-b-
xxxxa--
xxxx--c
Теперь вам просто нужно записать его в соответствующий текстовый файл вместо его печати; так как вы не указываете, как вы хотите это сделать (это конкретный c текстовый файл? это параметр функции? это существующий файл, к которому вы добавляете?), я оставлю эту часть для Вы должны заполнить.:)