Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将较小列表的值放置在较大列表的适当位置_Python_Indexing - Fatal编程技术网

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]