0

我有一个代码"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 列表转换为由先前在字典中分配的数值组成的列表

示例: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

我如何为整个 RANDOM 列表执行此操作?如果我简单地说,它不起作用:

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

有谁知道为什么这不起作用或如何使它起作用以获得完整的数字列表。即 123,234,456,345,...?

几个星期以来,我一直在搞砸这个。如果您想知道,这不是家庭作业,但这可以帮助我在其他领域的学习。任何帮助将不胜感激!

4

3 回答 3

4

迭代。

y = [d[x] for x in L]
于 2011-04-13T22:30:12.587 回答
1
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]

ifRANDOM包含一个不在dthen中的项目,d.get()而不是在构造列表的中间None引发。KeyErrory

于 2011-04-15T11:38:41.107 回答
0

y=d['aaa','bbb','ddd','ccc',...] 不起作用,因为 'aaa','bbb','ddd','ccc' 不是有效的密钥。y = d[ ... ] 查找 SINGLE 键值,并返回字典中该键的 SINGLE 匹配条目。

因此,您只需一次翻译每个条目。

y=d['aaa']

x=d['bbb']

z=d['ccc']

然后 a = [y, x, z] ... 等等。

或者,更智能的是,我们可以使用基于 RANDOM 列表长度循环的循环。

一个=列表()

对于随机的 x:

a.追加(d[x])

或者,花哨的

a = [d[x] for x in RANDOM]

于 2011-04-13T22:39:36.513 回答