为了账号安全,请及时绑定邮箱和手机立即绑定

创建将字母字符映射到数字的字典

创建将字母字符映射到数字的字典

芜湖不芜 2023-08-08 16:12:25
我想用Python编写一段代码,为每个字母字符分配一个数字,如下所示:a=0,b=1,c=2,...,y=24,z=25。我个人不喜欢为每个字母表设置条件,也不希望我的代码看起来经过设计。我想知道如何以最短(即最短的代码行)、最快和最简单的方式做到这一点。(我的想法是为此目的创建一本字典,但我想知道是否有更简洁更好的方法)。如有任何建议和提示,请提前表示感谢。
查看完整描述

4 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

您肯定需要一个字典来实现此目的,而不是将每个声明为变量。一种简单的方法是使用字典理解string.ascii_lowercaseas:


from string import ascii_lowercase


{v:k for k,v in enumerate(ascii_lowercase)}

# {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5...


查看完整回答
反对 回复 2023-08-08
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

这是我的两分钱,for 循环将完成这项工作:


d = {} #empty dictionary


alpha = 'abcdefghijklmnopqrstuvwxyz'


for i in range(26):

    d[alpha[i]] = i #assigns the key value as alphabets and corresponding index value from alpha string as the value for the key


print(d) #instant verification that the dictionary has been created properly


查看完整回答
反对 回复 2023-08-08
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

带有地图和枚举的一行:


# given

foo = 'abcxyz'

dict(enumerate(foo))


# returns: {0: 'a', 1: 'b', 2: 'c', 3: 'x', 4: 'y', 5: 'z'}

如果你需要用字符作为字典键,我想到的要么是字典理解......


{letter:num for (num,letter) in enumerate(foo) }


# returns {'a': 0, 'b': 1, 'c': 2, 'z': 3, 'y': 4, 'x': 5}

...或 lambda...


dict( map(lambda x: (x[1],x[0]), enumerate(foo)) )


# returns {'a': 0, 'b': 1, 'c': 2, 'z': 3, 'y': 4, 'x': 5}

我觉得 dict 理解比 map+lambda+enumerate更具可读性。


查看完整回答
反对 回复 2023-08-08
?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

已经有与字符相关联的数字。您可以将这些代码点与ord()一起使用。

一个简短的(就行而言)解决方案是:


num_of = lambda s: ord(s) - 97

一个普通的函数会更容易阅读:


def num_of(s):

    return ord(s) - 97

用法:


num_of("a") # 0

num_of("z") # 25

如果它必须是字典,您可以在不导入的情况下创建它,如下所示:


{chr(n):n-97 for n in range(ord("a"), ord("z")+1)}


查看完整回答
反对 回复 2023-08-08
  • 4 回答
  • 0 关注
  • 198 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信