列表'v1'、'v2'、'v3'和'v4'是标准列表。
v1 = ['Elisa', 'Liza', 'Izabela', 'Elisabeth', 'Elizabeth', 'Lisa', 'Lizzy', 'Isabella', 'Isabelle', 'Isabela', 'Liz']
v2 = ['Abbey', 'Abbie', 'Abigail', 'Abby', 'Gail']
v3 = ['Jonathan', 'Jon', 'John', 'Jonny', 'Johnny', 'Nathan']
v4 = ['Alejandra','Alexandra','Alexis','Alya','Alexa','Lexi','Allie','Ally']
列表"a"作为输入:
a = ['Jonathan', 'Jim', 'Jennifer', 'Alya', 'Renee', 'Natasha', 'Phil', 'Lisa', 'Joe', 'Ana', 'Paul', 'Gail', 'Roderick', 'Patricia']
每个标准列表中总是只有一个值出现在列表"a"中的任何位置。预期输出是一组列表,这些列表将具有按列表"a"中的值(从列表"v1"、"v2"、"v3"、"v4"中找到(划分的值集。这些集合的位置将按照'v1'值集合->'的顺序重新排列v2'值集->'v3'值集->'v4’值集。
预期输出的列表"a"按以下方式分为4个列表——a_ot1、a_ot2、a_ot3和a_ot4:
a_out1 = ['Lisa', 'Joe', 'Ana', 'Paul']
a_out2 = ['Gail', 'Roderick', 'Patricia']
a_out3 = ['Jonathan', 'Jim', 'Jennifer']
a_out4 = ['Alya', 'Renee', 'Natasha', 'Phil']
示例2:
a = ['Abby', 'Robin', 'Natasha', 'Frank', 'Ana', 'Jennifer', 'Elizabeth', 'Tanya', 'Jim', 'Will', 'Rob', 'Joe', 'Alexa', 'Roger', 'Adam', 'Paul', 'James', 'Kara', 'John', 'Jeff', 'Rick', 'Steve']
预期输出:
a_out1 = ['Elizabeth', 'Tanya', 'Jim', 'Will', 'Rob', 'Joe']
a_out2 = ['Abby', 'Robin', 'Natasha', 'Frank', 'Ana', 'Jennifer']
a_out3 = ['John', 'Jeff', 'Rick', 'Steve']
a_out4 = ['Alexa', 'Roger', 'Adam', 'Paul', 'James', 'Kara']
如何使用python列表获得这样的结果?
这里有一个脚本可以做到这一点:
v = [['Elisa', 'Liza', 'Izabela', 'Elisabeth', 'Elizabeth', 'Lisa', 'Lizzy', 'Isabella', 'Isabelle', 'Isabela', 'Liz'],
['Abbey', 'Abbie', 'Abigail', 'Abby', 'Gail'],
['Jonathan', 'Jon', 'John', 'Jonny', 'Johnny', 'Nathan'],
['Alejandra','Alexandra','Alexis','Alya','Alexa','Lexi','Allie','Ally']]
a = ['Jonathan', 'Jim', 'Jennifer', 'Alya', 'Renee', 'Natasha', 'Phil', 'Lisa', 'Joe', 'Ana', 'Paul', 'Gail', 'Roderick', 'Patricia']
# a = ['Abby', 'Robin', 'Natasha', 'Frank', 'Ana', 'Jennifer', 'Elizabeth', 'Tanya', 'Jim', 'Will', 'Rob', 'Joe', 'Alexa', 'Roger', 'Adam', 'Paul', 'James', 'Kara', 'John', 'Jeff', 'Rick', 'Steve']
which = {w:i for i in range(len(v)) for w in v[i]}
a_out = [[] for _ in v]
idx = 0
for w in a:
idx = which.get(w,idx)
a_out[idx].append(w)
请注意,子列表v[0], v[1], v[2], v[3]
是您的参考列表v1、v2、v3、v4。类似地,a_out
的子列表是您想要的输出。例如,运行上面的,然后运行for r in a_out: print(r)
会产生
['Lisa', 'Joe', 'Ana', 'Paul']
['Gail', 'Roderick', 'Patricia']
['Jonathan', 'Jim', 'Jennifer']
['Alya', 'Renee', 'Natasha', 'Phil']