Python 将较小列表的值放置在较大列表的适当位置
我需要在较大列表的适当位置输入较小列表的值,例如Python 将较小列表的值放置在较大列表的适当位置,python,indexing,Python,Indexing,我需要在较大列表的适当位置输入较小列表的值,例如 l_1 = ['a', 'c', 'e', 'd'] v_1 = [5, 6, 8, 10] l_2 = ['a', 'ab', 'c', 'd', 'e'] 我希望生成一个v_2值(初始化为大小为l_2的零),该值在l_1所属的位置取v_1。所以,对于上面的例子,我想 v_2 = [5, 0, 6, 10, 8] 显然,l_1是l_2的一个子集,也就是说,l_2将始终具有l_1的数量 我发现第一个答案有助于确定l_1在l_2中的位置,我希
l_1 = ['a', 'c', 'e', 'd']
v_1 = [5, 6, 8, 10]
l_2 = ['a', 'ab', 'c', 'd', 'e']
我希望生成一个v_2
值(初始化为大小为l_2
的零),该值在l_1
所属的位置取v_1
。所以,对于上面的例子,我想
v_2 = [5, 0, 6, 10, 8]
显然,l_1
是l_2
的一个子集,也就是说,l_2
将始终具有l_1
的数量
我发现第一个答案有助于确定l_1
在l_2
中的位置,我希望修改它以适合我的情况。理想情况下,我希望有3个输入
a = l_1
b = l_2
val = v_1
def ismember(a, b, val):
bind = {}
for i, elt in enumerate(b):
if elt not in bind:
bind[elt] = i
return [bind.get(itm, None) for itm in a]
我需要修改return语句,以便将
v_1
的适当条目输入到填充的v_2
,它可以初始化为np.zero((len(b),1))
在函数中使用l_1
中的值作为键,使用v_1
中的值作为值,构建用于查找的dict
要容易得多。例如:
>>> l_1 = ['a', 'c', 'e', 'd']
>>> v_1 = [5, 6, 8, 10]
>>> l_2 = ['a', 'ab', 'c', 'd', 'e']
然后
>>> d = dict(zip(l_1, v_1))
>>> [d.get(i, 0) for i in l_2]
[5, 0, 6, 10, 8]