Переведите список из нескольких слов в список из нескольких чисел, используя словарь в Python (2.7.1) - PullRequest
0 голосов
/ 14 апреля 2011

У меня есть код "aaabbbcccdddeee", который я разбил на 3 буквенные слова (например, 'aaa', 'bbb', 'ccc' ... и т. Д.) И присвоил им числовое значение, используя d=dict(zip(('aaa','bbb','ccc','ddd','eee'),(123,234,345,456,567)))

Если у меня есть случайная последовательность из 3 буквенных букв

RANDOM="'aaa','bbb','ddd','ccc','eee','ddd','bbb','aaa','eee','ccc'"

Как создать список, который преобразует СЛУЧАЙНЫЙ список в список, состоящий из числовых значений, которые были ранее назначены в словаре

Пример: RANDOM="'aaa','bbb','ddd','ccc','eee','ddd','bbb','aaa','eee','ccc'" 'для производства '123','234','456','345','567','456','234','123','567','345'

Я узнал, как это сделать для 1 значения:

>>> x=d['aaa']

>>> print x

>>> 123

Как мне сделать это для всего списка СЛУЧАЙНЫХ? Это не сработает, если я просто скажу:

>>> y=d['aaa','bbb','ddd','ccc',...]

Кто-нибудь знает, почему это не сработает или как заставить его работать, чтобы получить полный список номеров. то есть 123,234,456,345, ...?

Я возился с этим в течение нескольких недель. Если вам интересно, это не домашняя работа, но это может помочь мне в учебе в других областях. Любая помощь будет принята с благодарностью!

Ответы [ 3 ]

4 голосов
/ 14 апреля 2011

Перебор.

y = [d[x] for x in L]
1 голос
/ 15 апреля 2011
y = map(d.get, RANDOM)

Пример:

>>> d = dict(zip(('aaa','bbb','ccc','ddd','eee'), (123,234,345,456,567)))
>>> RANDOM = ['aaa','bbb','ddd','ccc','eee','ddd','bbb','aaa','eee','ccc']
>>> y = map(d.get, RANDOM)
>>> y
[123, 234, 456, 345, 567, 456, 234, 123, 567, 345]

, если RANDOM содержит элемент, которого нет в d, тогда d.get() возвращает None вместо повышения KeyError в середине построенияy список.

0 голосов
/ 14 апреля 2011

y = d ['aaa', 'bbb', 'ddd', 'ccc', ...] не будет работать, потому что 'aaa', 'bbb', 'ddd', 'ccc' не являетсядействительный ключ.Y = d [...] ищет значение ключа SINGLE и возвращает в словаре одну запись, соответствующую этому ключу.

Итак, вам просто нужно переводить каждую запись по одной за раз.

y = d ['aaa']

x = d ['bbb']

z = d ['ccc']

а затем a = [y, x, z] ... и т. д.

или, будучи более интеллектуальным, мы можем использовать цикл, который зацикливается на основе длины списка RANDOM.

a = list ()

для x в СЛУЧАЙНОМ:

a.append (d [x])

или, если хотите,

a = [d [x] для x в СЛУЧАЙНОМ]

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