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

时间:2017-10-04 11:50:54

标签: python python-3.x

我有一份房屋清单:

list1 = [home1, home2, home3, home4]

我还有另一份特定房屋清单:

list2 = [ home6, home7, home8, home10]

每个家庭都有一个字段date。我想将List2插入list1,具体取决于  home.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,我不想更改{{1}中对应的home的索引}}

有什么想法吗?

3 个答案:

答案 0 :(得分:7)

首先要做的是:在迭代它时修改列表(或dict,set etc)通常是一个非常糟糕的主意。

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

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

答案 1 :(得分:2)

编辑:

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

答案 2 :(得分:2)

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

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