使用dict将数字转换为python中的字母

时间:2018-02-21 21:05:39

标签: python list dictionary

我有一个字母'字母'包含字母表中的所有字母以及与这些字母对应的整数列表(0-25)。

前:

num_list = [5,3,1] would translate into letter_list = ['f','d','b']

我目前可以翻译:

letter_list = [alphabet[a] for a in num_list]

但是,我想使用dict来做同样的事情,检索字母'来自dict的密钥与'数字'值。

alpha_dict = {'a':0,'b':1,'c':2}... etc

如何更改语句以执行此操作?

5 个答案:

答案 0 :(得分:4)

只需遍历您的alphabet字符串,并使用字典理解来创建字典

# Use a dictionary comprehension to create your dictionary
alpha_dict = {letter:idx for idx, letter in enumerate(alphabet)}

然后,您可以使用alpha_dict[letter]将相应的号码检索到任何字母,将letter更改为您想要的任何字母。

然后,如果你想要一个与你的num_list对应的字母列表,你可以这样做:

[letter for letter, num in alpha_dict.items() if num in num_list]

基本上说:对于我字典中的每个键值对,如果值(即数字)在num_list

中,则将键(即字母)放在列表​​中

这会为您提供的['b', 'd', 'f']

返回num_list

答案 1 :(得分:2)

您也可以反转alpha_dict来执行此操作:

>>> import string
>>> alpha_dict = dict(enumerate(string.ascii_lowercase))
>>> alpha_dict
{0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h', 8: 'i', 9: 'j', 10: 'k', 11: 'l', 12: 'm', 13: 'n', 14: 'o', 15: 'p', 16: 'q', 17: 'r', 18: 's', 19: 't', 20: 'u', 21: 'v', 22: 'w', 23: 'x', 24: 'y', 25: 'z'}
>>> numbers = [5, 3, 1]
>>> [alpha_dict[x] for x in numbers]
['f', 'd', 'b']

这样你的词典就会将数字映射到字母,而不是字母映射到数字。

答案 2 :(得分:0)

你可以建立一个字母/数字的字典:

import string

alpha_dict = {
    i: string.ascii_lowercase[i]
        for i in list(range(0, len(string.ascii_lowercase)))
}

num_list = [5,3,1]
letter_list = [alpha_dict.get(a) for a in num_list]

然而,只使用这样的列表会更容易:

import string

num_list = [5,3,1]
letter_list = [string.ascii_lowercase[a] for a in num_list]

答案 3 :(得分:0)

我认为 - 就像其他答案一样 - 应该使用一个列表(利用方便的索引调用)但不应该使用字典,句点。所以......

    from string import ascii_lowercase # ONLY import ascii_lowercase
    numList = [numbers, in, your, list] # like you said in your question
    translation = "".join ([ascii_lowercase[num] for num in numList])

答案 4 :(得分:0)

letters = [chr(i) for i in range(97, 123)]
alph_index = dict(zip(letters, range(26)))
    
print(">> letters=", letters)
print(">> alph_index=", alph_index)
  • ord('a') = 97
  • chr(97) = 'a'
  • 97 是 a,65 是 A,122 是 z
Output:
>> letters= ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

>> alph_index= {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5, 'g': 6, 'h': 7, 'i': 8, 'j': 9, 'k': 10, 'l': 11, 'm': 12, 'n': 13, 'o': 14, 'p': 15, 'q': 16, 'r': 17, 's': 18, 't': 19, 'u': 20, 'v': 21, 'w': 22, 'x': 23, 'y': 24, 'z': 25}