要摆脱print 引入的额外空格,您可以使用sys.stdout.write() 将数据写入标准输出:
In [55]: letters = ('a', 'b', 'c', 'd')
In [56]: convert = {'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4}
In [57]: import sys
In [58]: for letter in letters: sys.stdout.write(convert[letter])
1234
附带说明一下,这里提出的大多数解决方案(包括我的)都会为您提供的输入数据产生预期的输出,但是看看如果letters 包含一个不是的字母(例如'e')会发生什么情况convert 中的一个键:
In [59]: letters = ('a', 'b', 'c', 'd', 'e')
In [60]: print ''.join(str(convert[letter]) for letter in letters)
Traceback (most recent call last):
File "<ipython-input-60-da3963dcc14b>", line 1, in <module>
print ''.join(str(convert[letter]) for letter in letters)
File "<ipython-input-60-da3963dcc14b>", line 1, in <genexpr>
print ''.join(str(convert[letter]) for letter in letters)
KeyError: 'e'
为避免这种情况,我建议您使用dict.get(),因为此方法返回默认值(在下面的示例中为''),而不是在键不在字典中时引发错误:
In [61]: print ''.join(str(convert.get(letter, '')) for letter in letters)
1234