簡體   English   中英

在python中使用dict將數字轉換為字母

[英]Using a dict to translate numbers to letters in python

我有一個字符串“alphabet”,其中包含字母表中的所有字母以及與這些字母(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

我如何更改我的聲明以執行此操作?

只需遍歷您的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 ,則將鍵(即字母)放在列表​​中

這將為您提供的num_list返回['b', 'd', 'f']

您也可以反轉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']

這樣,您的字典將數字映射為字母,而不是將字母映射為數字。

您可以這樣構建字母/數字字典:

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]

我認為-和其他答案一樣-句點應該使用列表(以利用方便的索引調用),但是不應該使用字典。 所以...

    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])
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}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM