假设我有这个元组列表

[
('r', 'p', ['A', 'B']),
('r', 'f', ['A']),
('r', 'e', ['A']),
('r', 'p', ['A']),
('r', 'f', ['B']),
('r', 'p', ['B']),
('r', 'e', ['B']),
('r', 'c', ['A'])
]

需要返回由元组中的第二个值聚合(分组依据)的元组列表,计算聚合的数量. 对于第三个值,它是一个数组,需要对其进行区分和聚合.

因此,对于上面的示例,结果将是:

[
('r', 'p', ['A', 'B'], 4),
('r', 'f', ['A', 'B'], 2),
('r', 'e', ['A', 'B'], 2),
('r', 'c', ['A'], 1)
]

在结果中,第一个值是常量,第二个值是唯一的(它是按其分组的),第三个值是不同的分组数组,第四个值是数组的值的计数(如果我们将它们分组

推荐答案

我希望我已经很好地理解了你的问题:

data = [
    ("r", "p", ["A", "B"]),
    ("r", "f", ["A"]),
    ("r", "e", ["A"]),
    ("r", "p", ["A"]),
    ("r", "f", ["B"]),
    ("r", "p", ["B"]),
    ("r", "e", ["B"]),
    ("r", "c", ["A"]),
]

out = {}
for a, b, c in data:
    out.setdefault((a, b), []).append(c)

out = [
    (a, b, list(set(v for l in c for v in l)), sum(map(len, c)))
    for (a, b), c in out.items()
]

print(out)

打印:

[
    ("r", "p", ["B", "A"], 4),
    ("r", "f", ["B", "A"], 2),
    ("r", "e", ["B", "A"], 2),
    ("r", "c", ["A"], 1),
]

Python相关问答推荐

Pandas:将多级列名改为一级

我想一列Panadas的Rashrame,这是一个URL,我保存为CSV,可以直接点击

如何启动下载并在不击中磁盘的情况下呈现响应?

如何使用两个关键函数来排序一个多索引框架?

numpy.unique如何消除重复列?

Python—为什么我的代码返回一个TypeError

ModuleNotFoundError:没有模块名为x时try 运行我的代码''

Python日志(log)模块如何在将消息发送到父日志(log)记录器之前向消息添加类实例变量

计算机找不到已安装的库'

如何为需要初始化的具体类实现依赖反转和接口分离?

为什么Visual Studio Code说我的代码在使用Pandas concat函数后无法访问?

按条件计算将记录拆分成两条记录

启动线程时,Python键盘模块冻结/不工作

仅取消堆叠最后三列

Scipy.linprog的可行性有问题吗?(A_ub@x0<;=b_ub).all()为True-但是-linprog(np.zeros_like(X0),A_ub=A_ub,b_ub=b_ub)不可行

大Pandas 中的群体交叉融合

我的浮点问题--在C++/Python中的试用

给定y的误差时,线性回归系数的计算误差

try 第二次训练新的JAX+Equinox模型时,具有多个元素的数组的真值不明确(&Q)

nameError_C未定义