我有两个列表。
list1=('a','b','c')
list2=('2','1','3')
和一个文本文件这个文本文件有三行,所以我想在其中添加 'a'
第二行 '-'
在其他人身上。'b'
第一行 '-'
在其他人身上,以及 'c'
第三行 '-'
在别人那里根据list1和list2这样做。
xxxx-b-
xxxxa--
xxxx--c
第一个任务是让第一个列表正确排序。 这很容易,如果你 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
现在你只需要把它写到相应的文本文件中,而不是打印出来;因为你没有说明你想怎么做(是一个特定的文本文件? 是一个函数的参数?我就把这部分留给你来填了。)
我是这样做的,但我认为有一个比我的方法更好的方法
list1=['1','4','3','2']
list2=['a','b','c','d']
j=0
while j < len(list1):
with open("note2.txt",'r+') as f:
line = f.readlines()
note=""
f.seek(0)
for index,line in enumerate(line):
if index==list1[j]:
note+=line.strip()+ str(list2[j])+'\n'
else:
note+=line.strip()+ '-\n'
f.write(note)
f.close()
j+=1