列出从一个到另一个列表的值

时间:2011-02-05 21:32:37

标签: python list dictionary replace

我几乎是python的新手,我遇到了一个看似简单的问题。我有两个清单

L1 = [a,b,c]
L2 = [1,2,3]

现在我想将L2中的值替换为L1变为L1 = [1,2,3]

现在这就是有趣的地方

L2的长度始终是L1中可以有多少个唯一项目 例如

L2 = [1,2,3,4,5]
than
L1 = [a,b,c,d,e]
or
L2 = [1,2]
than
L1 = [a,b]

但那不是全部...... L1的长度可以不同,并且在L2的长度之后无序......:

例如:

L2 = [1,2]
than L1 might be
L1 = [a,b,a,a,a,b] #(first two items are always different)
or
L2 = [1,2,3,4,5]
than L1 might be
L1 = [a,b,c,d,e,a,a,e,e,b,b] #(first 5 items are different) 

我希望我解释得足够好。如果有任何问题可以随意提问!

我希望有人可以帮助我,或者给我一个提示,在哪里或者搜索什么。我这几天都试图解决这个问题。

事先提前

贾登

_edit __

L1和L2是在我的脚本的早期创建的。现在我想以某种方式连接两个列表中的项目。

L1[0] = L2[0]
L1[1] = L2[1]

等等。对于L2的长度,但它必须发生在L1中的每个项目,因为L1总是比L2长。这就是问题所在。

希望这有帮助,

贾登

2 个答案:

答案 0 :(得分:2)

您可以替换列表的切片。

>>> L1 = ['a','b','c','d','e','a','a','e','e','b','b']
>>> L2 = [1,2,3,4,5]
>>> length = len(L2)
>>> L1[:length] = L2[:length]
>>> print(L1)
[1, 2, 3, 4, 5, 'a', 'a', 'e', 'e', 'b', 'b']

万一我误解了您想要的内容,并希望将'a'的每个实例替换为1,将'b'替换为2等,这样做有效:

>>> L1 = ['a','b','c','d','e','a','a','e','e','b','b']
>>> L2 = [1,2,3,4,5]
>>> mapping = dict(zip(L1, L2))
>>> for i, k in enumerate(L1[:]):
        L1[i] = mapping[k]
>>> print(L1)
[1, 2, 3, 4, 5, 1, 1, 5, 5, 2, 2]

答案 1 :(得分:0)

您可以创建一个字典,其中包含从l1到l2,{'a':1,'b':2,....}的值的映射,然后迭代l1并替换值。

d = dict ((l1[idx],y) for idx, y in enumerate(l2))
l1 = [d[x] for x in l1]

编辑:为了更好地理解您的问题,发布给定示例的预期输出会很有帮助。