0

我编写了这个程序,我需要在其中制作一个姓名列表,姓氏按字母顺序排列,名字在其前面。这是我到目前为止所做的:

firstnames = ['good', 'bad', 'tall', 'big']
lastnames = ['boy', 'girl', 'guy', 'man']
list3 = [a + b for a, b in zip(firstnames, lastnames)]
l3 = sorted(list3)
n = len(l3)
l4 = zip(*[l3])
print l3
print l4

zip* 将元素变成元组,但我如何再次分离元素,并以不同的顺序加入它们?

4

2 回答 2

2

完成后a+b,您将无法将它们分开。您已将字符串连接在一起,结果中没有任何内容表明字符串的哪一部分是名字,哪一部分是姓氏。

对来自的元组进行排序zip

print sorted(zip(firstnames, lastnames), key = lambda pair: pair[1])

它们已排序,您可以连接字符串。

另外,请注意,您可以按其他顺序压缩它们,然后它们将按姓氏排序,而无需指定key

print [b + a for a, b in sorted(zip(lastnames, firstnames))]
于 2013-09-26T15:29:23.707 回答
1

我认为您只需要使用 zip 一次:

ans = ['%s %s' % (first, last) for (first, last) in zip(firstnames, sorted(lastnames))]
于 2013-09-26T15:29:41.210 回答