【发布时间】:2020-03-14 09:43:26
【问题描述】:
我需要在较大列表中的适当位置输入较小列表的值,例如,
l_1 = ['a', 'c', 'e', 'd']
v_1 = [5, 6, 8, 10]
l_2 = ['a', 'ab', 'c', 'd', 'e']
我希望在l_1 属于l_2 的位置生成一个v_2 值(初始化为大小为零的l_2),它采用v_1。所以,对于上面的例子,我想得到
v_2 = [5, 0, 6, 10, 8]
很明显,l_1 是l_2 的子集,即l_2 的数量总是l_1。
我发现第一个答案here 有助于确定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.zeros((len(b),1))
【问题讨论】: