python构建字典英文与ascii_创建一个使用map和rang映射ascii字符的字典

字典打印时的顺序不是由键的值决定的,也不一定是按键的值来排列的。顺序取决于所运行的Python实现,取决于CPython的顺序取决于键的哈希值和插入顺序。在

出于所有意图和目的,您应该假设顺序是随机的。在

换句话说:你的代码是有效的!

如果将0值替换为字符数,这一点会更清楚:>>> symbol_map = dict([(chr(x), x) for x in range(33,64) + range (91,96) + range(123,126)])

>>> symbol_map

{'!': 33, '#': 35, '"': 34, '%': 37, '$': 36, "'": 39, '&': 38, ')': 41, '(': 40, '+': 43, '*': 42, '-': 45, ',': 44, '/': 47, '.': 46, '1': 49, '0': 48, '3': 51, '2': 50, '5': 53, '4': 52, '7': 55, '6': 54, '9': 57, '8': 56, ';': 59, ':': 58, '=': 61, '': 62, '[': 91, ']': 93, '\\': 92, '_': 95, '^': 94, '{': 123, '}': 125, '|': 124}

在这里,您可以看到每个字符都正确地映射到字符的右序数:

^{2}$

字典中的顺序没有什么区别,除非你需要按特定的顺序打印出来。在这种情况下,您可以通过排序来实现:>>> for x in sorted(symbol_map): print x,

...

! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? [ \ ] ^ _ { | }

但是在使用它时,通常不需要在按键访问目录时对字典进行排序。在

更新:我以为这些特定的范围是有意为之,但如果您想要一般的标点和数字,请尝试以下方法:>>> import string

>>> symbol_map = dict([(x, 0) for x in string.punctuation + string.digits])

>>> symbol_map.keys()

['!', '#', '"', '%', '$', "'", '&', ')', '(', '+', '*', '-', ',', '/', '.', '1', '0', '3', '2', '5', '4', '7', '6', '9', '8', ';', ':', '=', '', '@', '[', ']', '\\', '_', '^', '`', '{', '}', '|', '~']

与您的差别很小,例如它包括~,但仍然如此。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值