组合嵌套列表中的列表,如果列表包含相同的元素?

F16*_*con 4 python list python-3.x

我有一个结构与此类似的嵌套列表,但它显然要长得多:

mylist = [ ["Bob", "12-01 2:30"], ["Sal", "12-01 5:23"], ["Jill", "12-02 1:28"] ]
Run Code Online (Sandbox Code Playgroud)

我的目标是创建另一个嵌套列表,将具有相同日期的所有元素组合在一起。因此,需要以下输出:

newlist = [  [["Bob", "12-01 2:30"], ["Sal", "12-01 5:23"]], [["Jill", "12-02 1:28"]]  ]
Run Code Online (Sandbox Code Playgroud)

上面,日期为 12-01 的所有项目,无论时间如何,都组合在一起,12-02 的所有元素都组合在一起。

在过去的 1 小时里,我一直在真诚地研究如何做到这一点,但找不到任何东西。此外,我是编程的初学者,所以我不够熟练,无法尝试创建自己的解决方案。所以,请不要认为我没有尝试做研究或自己尝试尝试这个问题。我将在下面添加一些链接作为我的研究示例:

将列表中的每一对元素收集到 Python 中的元组中

如果条件为真,则创建具有相邻列表元素的元组列表

如何在 Python 中连接两个列表?

在没有嵌套 for 循环的情况下在 Python 中连接两个字符串元素列表

根据字符串中的匹配日期将两个列表压缩在一起

如何将列表合并为元组列表?

Dus*_*osa 5

使用 dict 或 orderdict(如果排序很重要)按日期时间对数据进行分组。

from collections import defaultdict # use defaultdict like {}.setdefault(), it's very facility

mylist = [["Bob", "12-01 2:30"], ["Sal", "12-01 5:23"], ["Jill", "12-02 1:28"]]
record_dict = defaultdict(list)
# then iter the list group all date time.

for data in mylist:
    _, time = data
    date_time, _ = time.split(" ")
    record_dict[date_time].append(data)

res_list = list(record_dict.values())
print(res_list)
Run Code Online (Sandbox Code Playgroud)

输出:
[[['Bob', '12-01 2:30'], ['Sal', '12-01 5:23']], [['Jill', '12-02 1:28']]]