如何根据日期值将列表的元素插入到另一个列表中?

2024-09-29 17:10:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一张房屋清单:

list1 = [home1, home2, home3, home4]

我还有另外一份具体房屋的清单:

list2 = [ home6, home7, home8, home10]

每个家庭都有一个字段date。我想根据情况将List2插入list1home.date

例如,如果home7.date < home1.date,那么home7将插入list1之前的home1

我试着使用两个for循环,但它似乎非常慢,而且有许多计算是由CPU完成的

        for el in list1:
            for elt2 in list2:
                if el.date > elt2.date:
                    list1.insert((list1.index(el)),elt2)

PS:有些日期没有设置,因此它们有一个None值,我不想更改list1中对应的home的索引

有什么想法吗?你知道吗


Tags: inhomefordateellist2list1房屋
3条回答

第一件事:在迭代时修改列表(或dict、set等)通常是一个非常糟糕的主意。你知道吗

在您的例子中,最简单的解决方案可能是先合并两个列表,然后使用key回调对列表进行排序:

list1.extend(list2)
list1.sort(key=lambda x: x.date)

要返回新的排序列表,应使用sorted()内置函数:

sorted_list = sorted(list1 + list2, key=lambda x: x.date, reverse=True)

编辑时间:

list3 = (list1 + list2)
list3.sort(key = lambda x: x.date)

相关问题 更多 >

    热门问题