2015-11-12 28 views
3

我有名字ids.txt文件还与名在ids.txt文件中,我们看到文件names.txt如何加入相应的数组中的元素在Python

23 
422 
5123 
642 
8743 

names.txt文件的内容:

jon1 
jon2 
jon3 
jon4 
jon5 

我想这样的排序是:

23 jon1 
422 jon2 
5123 jon3 
642 jon4 
8743 jon5; 

当它的排序的最后一个设置像这样

8743 jon5; 

我在做什么是:

IDs = file("IDs.txt").read().splitlines() 
names = file("names-specialitys.txt").read().splitlines() 
for i in IDs: 
    for n in names: 
     print i, n 

但它的打印这样的:

23 jon1 
422 jon1 
5123 jon1 
642 jon1 
8743 jon1 
23 jon2 

...等

+1

'zip'这两个列表。 –

+0

在你的问题中,你说'排序',但是列表[22,422,5123,642,...]没有排序(无论如何都是升序或降序)。我认为你的意思是你想将两个列表中的项目组合在一起。 – Alasdair

回答

4

可以zip名单在一起。

for i, n in zip(IDs, names): 
    print i, n 

要以不同的方式显示最后一行,可以在将它们压缩之前切分列表。然后分别打印最后一行。

for i, n in list(zip(IDs[:-1], names[:-1]): 
    print("{} {}".format(i, n)) 
print("{} {};".format(IDs[-1], names[-1])) 
+0

以及如何知道该文件的最后一行,并设置“;”在最后打印 – emzemzx

+0

像这样结束:8743 jon5; – emzemzx

+0

谢谢你。非常! – emzemzx

1

“Zip” y解释:

Python内置了一个很好的zip()函数。它需要2个列表,并将每个项目与数组中的同一点处的项目结合在一起。

例子:

a = b = c = range(20) 
zip(a, b, c) #=> [(0, 0, 0), (1, 1, 1), ... (18, 18, 18), (19, 19, 19)] 

您的解决方案:

for i, n in zip(IDs, names): 
    print i + " " + n 
相关问题