如何将python中的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函数,但在将其转换为列表后,结果却很奇怪 我还尝试将列表转换为元组

我试图输出一个用户输入字符串的字母值,我创建了一个dict,这个过程可以工作,但只有一个字母

  • 如果我尝试输入多个字母,它将返回一个
    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]