首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python中检查2列表并重新排列顺序

如何在python中检查2列表并重新排列顺序
EN

Stack Overflow用户
提问于 2021-01-29 05:50:02
回答 4查看 59关注 0票数 1

我有一个父列表['Python', 'Java', 'c#', 'Csharp']

如果我的输入列表['c#', 'Java']

从输入列表中,我需要按照父列表中的顺序排列顺序。

预期输出为['Java', 'c#']

如果输入列表为空[],则输出列表['Python']

1多一个测试场景

输入>> ['Python', 'Java', 'Csharp', 'c#']输出>> ['Python', 'Java', 'c#', 'Csharp']

我是否需要创建一个订单字典并进行如下比较?

  • {'Python':1, 'Java':2, 'c#':3, 'Csharp':4}
  • Then检查输入并对其进行排序或任何其他方式?
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-01-29 06:35:38

您可以迭代父列表,并检查父列表中的每个元素是否也在input_list中。如果是,则应在父列表中打印元素。

您还需要检查input_list是否为空。如果为空,则需要打印Python。所以也要加上这个条件。

这是完成这个任务的代码。得到输出列表是一种列表理解。

代码语言:javascript
复制
parent_list = ['Python', 'Java', 'c#', 'Csharp']

def get_output(input_list):
    if input_list:
        return [x for x in parent_list if x in input_list]
    else:
        return ['Python']

print (get_output(['c#', 'Java']))

print (get_output([]))

print (get_output(['Python', 'Java', 'Csharp', 'c#']))

这方面的产出如下:

代码语言:javascript
复制
['Java', 'c#']
['Python']
['Python', 'Java', 'c#', 'Csharp']
票数 0
EN

Stack Overflow用户

发布于 2021-01-29 06:04:35

您只需遍历父列表,查看条目是否在输入列表中,并将其追加。还添加了关于空输入列表的特殊条件,如下所示:

代码语言:javascript
复制
output = []
if not input:
    output.append('Python')
for item in parent:
    if item in input:
        output.append(item)
print(output)
票数 1
EN

Stack Overflow用户

发布于 2021-01-29 05:59:47

您可以使用sortedzip

key=lambda pair: pair[0]将根据Y (parent_list)中的顺序对输出列表中的值进行排序。

代码语言:javascript
复制
def func(X, Y):
    op_list = [x for y, x in sorted(zip(Y,X), key=lambda pair: pair[0]) if x in Y]
    if not X:
        op_list = ['Python']

    return op_list

print(func(input_list, parent_list))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65949424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档