Заменить строку числовыми значениями на основе словаря - PullRequest
0 голосов
/ 30 мая 2018

У меня есть список строк, таких как:

strings = ["acbd", "abc", "acbde", "abc"]

И словарь, содержащий числовые представления каждого символа:

dict_ = {"a":[0.4, 0.3, 0.8, -0.1], "b":[1.5, -1.6, 1.2], "c":[7.4, 4.3], "d":[4.23, 0.5, 0.9, 0.5, 1.7], "e":[1.5, 8.1]}

Как я могу получить числовое представление для каждогострока в strings?Например, для «acbd» я хочу составленный список составляющих символов в следующем порядке: [0.4, 0.3, 0.8, -0.1, 7.4, 4.3, 1.5, -1.6, 1.2, 4.23, 0.5, 0.9, 0.5, 1.7].Я хочу вывод со списком списков, где каждый список представляет собой числовое представление строки.

Какой самый эффективный способ сделать это также?

Мои реальные данные содержат более 100000 строк и все 26 символов.

1 Ответ

0 голосов
/ 30 мая 2018

Вот одно решение, использующее itertools.chain и понимание списка.

В нем нет оптимизации для повторяющихся строк.Я предлагаю вам проверить свои данные, чтобы убедиться, что производительность достаточна.

from itertools import chain

res = [list(chain.from_iterable(map(dict_.get, i))) for i in strings]

print(res)

[[0.4, 0.3, 0.8, -0.1, 7.4, 4.3, 1.5, -1.6, 1.2, 4.23, 0.5, 0.9, 0.5, 1.7],
 [0.4, 0.3, 0.8, -0.1, 1.5, -1.6, 1.2, 7.4, 4.3],
 [0.4, 0.3, 0.8, -0.1, 7.4, 4.3, 1.5, -1.6, 1.2, 4.23, 0.5, 0.9, 0.5, 1.7, 1.5, 8.1],
 [0.4, 0.3, 0.8, -0.1, 1.5, -1.6, 1.2, 7.4, 4.3]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...