python - 如何在 python 中使用一组列表来分区和重新排列列表值?

标签 python list

列表“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_out = ['Lisa', 'Joe', 'Ana', 'Paul', 'Gail', 'Roderick', 'Patricia', 'Jonathan', 'Jim', 'Jennifer', 'Alya', 'Renee', 'Natasha', 'Phil']

分区和设置引用图像 -

enter image description here

示例 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_out = ['Elizabeth', 'Tanya', 'Jim', 'Will', 'Rob', 'Joe', 'Abby', 'Robin', 'Natasha', 'Frank', 'Ana', 'Jennifer', 'John', 'Jeff', 'Rick', 'Steve', 'Alexa', 'Roger', 'Adam', 'Paul', 'James', 'Kara']

分区和设置引用图像 -

enter image description here

如何使用Python列表获得这样的结果?

最佳答案

尝试:

tmp = {}
for i, lst in enumerate([v1, v2, v3, v4], 1):
    for w in lst:
        tmp[w] = i

a_new, last = [], 0
for i, w in enumerate(a):
    last = tmp.get(w, last)
    a_new.append(last)

print([w for w, _ in sorted(zip(a, a_new), key=lambda k: k[1])])

打印:

['Lisa', 'Joe', 'Ana', 'Paul', 'Gail', 'Roderick', 'Patricia', 'Jonathan', 'Jim', 'Jennifer', 'Alya', 'Renee', 'Natasha', 'Phil']

注意:如果在 v1/v2/v3 或 v4 中找不到名字,则会将其放置在输出列表的开头。

关于python - 如何在 python 中使用一组列表来分区和重新排列列表值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73587323/

相关文章:

python - 无法为 Python 安装新包(Python 3.9.0、Windows 10)

python - 匹配 Python 3 中字符串列表中的重音字符串

python - 在 python 字典列表中查找重复项

c++ - 如何创建列表,谁可以包含功能

python - 如何从文本 block 而不是字符中提取行?

python - tensorflow 中的剪切图像

Python Fabric 和密码提示

Python 2.7 - 检查单元素元组列表中的双元素元组中的第一个元素

list - Markdown 中的单独列表

递归地更改R中嵌套列表中的名称