输入:

x = ( (1,"A", 10),(1,"B", 10),(1,"B", 10),(1,"C", 10),(1,"C", 10),(1,"B", 10),(1,"A", 10),(1,"A", 10),(1,"C", 10),(1,"B", 10))

预期输出:

{'A': [(1, 'A', 10), (7, 'A', 70), (8, 'A', 80)], 'B': [(2, 'B', 20), (3, 'B', 30), (6, 'B', 60), (10, 'B', 100)], 'C': [(4, 'C', 40), (5, 'C', 50), (9, 'C', 90)]}

基本上是根据元组中的一个元素对元组进行分组

我试过了,但感觉不像是古典式的

def consolidate(values):
    res = {}
    for a in values:
        if a[1] in res:
            p = res[a[1]]
            p.append(a)
            res[a[1]] = p
        else:
            res[a[1]] = [a]
    return res

推荐答案

您可以使用dict.setdefault:

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

print(out)

打印:

{
    "A": [(1, "A", 10), (1, "A", 10), (1, "A", 10)],
    "B": [(1, "B", 10), (1, "B", 10), (1, "B", 10), (1, "B", 10)],
    "C": [(1, "C", 10), (1, "C", 10), (1, "C", 10)],
}

Python相关问答推荐

Python中的负前瞻性regex遇到麻烦

如何处理嵌套的SON?

使用polars .滤镜进行切片速度比pandas .loc慢

使用numpy提取数据块

Django mysql图标不适用于小 case

运行Python脚本时,用作命令行参数的SON文本

如果值不存在,列表理解返回列表

NP.round解算数据后NP.unique

Telethon加入私有频道

"使用odbc_connect(raw)连接字符串登录失败;可用于pyodbc"

为什么以这种方式调用pd.ExcelWriter会创建无效的文件格式或扩展名?

无法使用DBFS File API路径附加到CSV In Datricks(OSError Errno 95操作不支持)

如何在Python中找到线性依赖mod 2

多处理队列在与Forking http.server一起使用时随机跳过项目

字符串合并语法在哪里记录

处理具有多个独立头的CSV文件

搜索按钮不工作,Python tkinter

提高算法效率的策略?

Polars Group by描述扩展

如果有2个或3个,则从pandas列中删除空格