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

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



芜湖不芜
浏览 199回答 4
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...

慕码人2483693

这是我的两分钱,for 循环将完成这项工作:d = {} #empty dictionaryalpha = '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 keyprint(d) #instant verification that the dictionary has been created properly

白衣染霜花

带有地图和枚举的一行:# givenfoo = '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更具可读性。

有只小跳蛙

已经有与字符相关联的数字。您可以将这些代码点与ord()一起使用。一个简短的(就行而言)解决方案是:num_of = lambda s: ord(s) - 97一个普通的函数会更容易阅读:def num_of(s):    return ord(s) - 97用法:num_of("a") # 0num_of("z") # 25如果它必须是字典,您可以在不导入的情况下创建它,如下所示:{chr(n):n-97 for n in range(ord("a"), ord("z")+1)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python