2013-02-17 39 views
0

我在这里看到这个问题aDict包含字母表,但我怎样才能包含空格,引号,点,双引号以及?如何用空格,引号,点,双引号等来创建一个字典

How to create a dict with letters as keys in a concise way?

怎么能包括空间,报价点,双引号,以及在这里?感谢

import string 
aDict = dict(zip(string.ascii_lowercase, range(1, 27))) 
+0

所以你想要所有的标点符号,或者只是你指定的那个? – Volatility 2013-02-17 00:15:37

+0

他们会映射到什么地方?你的例子将这些字母映射到1-26,你会如何映射标点符号? – Amber 2013-02-17 00:16:33

+0

基于[这个答案](http://stackoverflow.com/a/14902939/989121):'{x:我为i,x在枚举(string.ascii_lowercase +“whatever”)}' – georg 2013-02-17 00:18:16

回答

3

这样,您就可以创建ASCII字符作为键和相应数量的字典作为值:

aDict = { chr(x):x for x in range(129) } 
+1

我喜欢那个......但是127是最后一个ascii字符,而不是128. – tdelaney 2013-02-17 05:05:57

1

您可以用空格字符开始,直至得到所有可见的字符(但不包括)\x7f字符。

{v: k for k, v in enumerate((chr(x) for x in range(ord(' '), ord('\x7f'))), 1)} 

如果你想包括\t\n\r你可以把它们连。

import itertools 

{v: k for k, v in 
enumerate(itertools.chain(('\t', '\n', '\r'), 
          (chr(x) for x in range(ord(' '), ord('\x7f')))), 
      1)} 
+0

切换到手机上的桌面视图,应该可以工作。 – pyrospade 2013-02-17 01:39:35