如何将python中的dict应用于字符串而不是单个字母
我试图输出一个用户输入字符串的字母值,我创建了一个dict,这个过程可以工作,但只有一个字母如何将python中的dict应用于字符串而不是单个字母,python,list,dictionary,tuples,alphabet,Python,List,Dictionary,Tuples,Alphabet,我试图输出一个用户输入字符串的字母值,我创建了一个dict,这个过程可以工作,但只有一个字母 如果我尝试输入多个字母,它将返回一个KeyError:(我输入的字符串) 如果我尝试创建一个字符串列表,使其成为['e','x','a','m','p','l','e'],我会得到一个TypeError:unhable type:'list' 我不能使用chr和ord函数(我知道如何使用,但它们在这种情况下不适用),我尝试过使用map函数,但在将其转换为列表后,结果却很奇怪 我还尝试将列表转换为元组
- 如果我尝试输入多个字母,它将返回一个
KeyError:(我输入的字符串)
- 如果我尝试创建一个字符串列表,使其成为
,我会得到一个['e','x','a','m','p','l','e']
TypeError:unhable type:'list'
chr
和ord
函数(我知道如何使用,但它们在这种情况下不适用),我尝试过使用map
函数,但在将其转换为列表后,结果却很奇怪
我还尝试将列表
转换为元组
,但这会产生相同的错误
这是我的密码:
import string
step = 1
values = dict()
for index, letter in enumerate(string.ascii_lowercase):
values[letter] = index + 1
keyw=input("Enter your keyword for encryption")
keylist=list(keyw)
print(values[keylist])
不带列表的Alt版本:
import string
step=1
values=dict()
for index, letter in enumerate(string.ascii_lowercase):
values[letter] = index + 1
keyw=input("Enter your keyword for encryption")
print(values[keyw])
您需要循环遍历所有字母,并分别映射每个字母:
mapped = [values[letter] for letter in keyw]
print(mapped)
这使用列表理解来构建整数列表:
>>> [values[letter] for letter in 'example']
[5, 24, 1, 13, 16, 12, 5]
map();您需要在该对象上循环以查看结果:
>>> for result in map(values.get, 'example'):
... print(result)
5
24
1
13
16
12
5
请注意,您可以在一行中构建值
字典enumerate()
接受第二个参数,即起始值(默认为0);使用dict理解来反转value-key元组将为您提供:
values = {letter: index for index, letter in enumerate(string.ascii_lowercase, 1)}
你完全可以使用ord()
测试:
您可以编写简单的for循环来将字母表映射到整数。
试试这个
print[(item, (values[item]))for item in keylist]
是否要将keyw
中的每个字母分别映射为一个整数?预期产量是多少?
import string
print([ord(n.upper())-64 for n in string.ascii_lowercase if n.isalpha()])
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26]
print[(item, (values[item]))for item in keylist]