gpt4 book ai didi

Python,从列表中删除重复项并转换为 one2many

转载 作者:行者123 更新时间:2023-11-28 23:00:23 24 4
gpt4 key购买 nike

作为一个 python 新手,我需要解决这个非常简单的问题。假设我有一个类:

class Event():
eid = 0
events = []

def __repr__(self):
return "id:"+str(self.eid) + "=>" + str(self.events)

def __str__(self):
return self.__repr__()

让我们创建一些实例并将它们保存到列表中

eventset = list()
e1 = Event()
e1.eid = 0
e1.events = [('1','2','3','A')]

e3 = Event()
e3.eid = 1
e3.events = [('4','5','6','A')]

e2 = Event()
e2.eid = 0
e2.events = [('7','8','9','A')]

e4 = Event()
e4.eid = 1
e4.events = [('10','11','12','A')]

eventset.append(e1,e2,e3,e4)

打印事件集给出:

[id:0=>[('1', '2', '3', 'A')], id:0=>[('7', '8', '9', 'A')], id:1=>[('4', '5', '6',   'A')], id:1=>[('10', '11', '12', 'A')]]

我想创建一个如下所示的新列表:

[id:0=>[('1', '2', '3', 'A'),('7', '8', '9', 'A')], id:1=>[('4', '5', '6','A'),('10', '11', '12', 'A')]]

如何以“Pythonic 方式”实现这种优雅的方式?

编辑:

  1. 需要保持列表中事件元素的顺序

  2. 不想创建新的Event实例副本

最佳答案

您真正需要的是一个字典,其中的键是 eid,项目是您的所有事件。我用过defaultdict从集合中为字典提供默认项 - 在本例中为列表。

from collections import defaultdict

d = defaultdict(list)

for i in [e1,e2,e3,e4]:
d[i.eid].append(i.events[0])

关于Python,从列表中删除重复项并转换为 one2many,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12140946/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com