преобразовать букву из списка в число в зависимости от другого списка в Python - PullRequest
0 голосов
/ 25 ноября 2018

Я хочу преобразовать каждую букву слова списка в число в зависимости от символа и числа в списках.Итак, a = 0, b = 02300, c = 2. Я хочу этот вывод:

encoding = [34, 9, 432, 432, 104, 124546324, 104693, 104, 432, 5]

ps: это не импорт, если между каждым числом нет пробела.

word = ["Hello world"]
    encoding = []
    charachter = ["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",""]
    number = [0,02300,2,5,9,7,10,34,876,23,125,432,567,103,104,10234,102435,332,7654,12435,65434,12121,104693,130694,120357,12346,124546324]

Iне надо ничего делать, потому что числа в списке не равны индексу букв в символе списка.

PS: Я надеюсь, что нет другой темы, как эта, потому что я не нашел ее

Ответы [ 4 ]

0 голосов
/ 25 ноября 2018

Вы можете сделать это так:

word = "Hello world"
encoding = []
character = ["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"," "]
number = [0,02300,2,5,9,7,10,34,876,23,125,432,567,103,104,10234,102435,332,7654,12435,65434,12121,104693,130694,120357,12346,124546324]

# create a dictionary with keys as characters and values as numbers
mapping = {}
for i in range(0,27):
    mapping[character[i]] = number[i]

# now iterate over the string and look up the dictionary for each character
for x in word:
    encoding.append(mapping[x.lower()])

print(encoding)

Примечание:

  1. Я рассматриваю word как строку (word = "Hello world"), а не как массивстроки (word = ["Hello world"]).
  2. Я заменил последний элемент ("") в массиве символов пробелом (" ").Нам нужно это заменить пространство между Hello и world.
0 голосов
/ 25 ноября 2018

Ваше сообщение содержит довольно много нарушений, таких как пропущенные символы, недопустимые целые числа, пропущенные отображения и этот специфический перевод для пустой строки - так что я собираюсь ответить в целом.

Что вы хотите (то, что я взял из «Это не импорт, если между каждым числом нет пробелов») - это таблица перевода, которая отображает символы в их перевод.Вы можете получить его, передав сопоставление символов в строки в str.maketrans.

>>> char_to_number = {'a': '0', 'b': '02300', 'c': '2'} # ... and so on
>>> translator = str.maketrans(char_to_number)
>>> plain = 'abcabc'
>>> 
>>> plain.translate(translator)
'00230020023002'

Если вы действительно хотите получить список, используйте

>>> [char_to_number[c] for c in plain]
['0', '02300', '2', '0', '02300', '2']
0 голосов
/ 25 ноября 2018

Вы можете создать словарь, используя zip и map, чтобы сопоставить соответствующую букву с номером шифрования.

word = "Hello world"
encoding = []
charachter = ["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",""]
number = [0,2300,2,5,9,7,10,34,876,23,125,432,567,103,104,10234,102435,332,7654,12435,65434,12121,104693,130694,120357,12346,124546324]

lookup = dict(zip(charachter,number))
output = " ".join(list(map(lambda elem: str(lookup.get(elem,' ')), word.lower())))
print(output)

Вывод:

34 9 432 432 104   104693 104 332 432 5
0 голосов
/ 25 ноября 2018

Вы можете использовать zip () для создания словаря поиска.

word = "Hello world"
encoding = []
charachter = ["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",""]
number = [0,2300,2,5,9,7,10,34,876,23,125,432,567,103,104,10234,102435,332,7654,12435,
          65434,12121,104693,130694,120357,12346,124546324]

mapping = {k:v for k,v in zip(charachter,number)}  # or dict(zip(...))

enc = [mapping.get(c, c) for c in word.lower()] # use character as default if not mapped

print(enc)  # [34, 9, 432, 432, 104, ' ', 104693, 104, 332, 432, 5]

Я решил использовать строчные буквы (и переместил их в обычную строку, а не в список строк).с одной строкой).

Если символ не отображается, он будет использовать его вместо числа (например, пробел).

Вы можете создать из него строку, разделенную пробеломс:

s = ' '.join(map(str,enc))
print( s )  

Вывод:

34 9 432 432 104   104693 104 332 432 5

См. Почему dict.get (ключ) вместо dict [ключ]? для dict.get()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...