You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并字典中同前缀对应值并转换为Pandas DataFrame?

更简洁高效的实现方案

一、字典重构优化

你的现有实现逻辑清晰,这里提供两种更简洁的写法,同时保证-和+符号始终存在:

写法1:可读性优先

a = {1: [['-','A'],['+','B'],['-','C']]}

for key, lst in a.items():
    # 预先初始化正负分组,避免符号缺失
    groups = {'-': [], '+': []}
    for sign, char in lst:
        groups[sign].append(char)
    # 拼接字符并更新字典
    a[key] = [[sign, ''.join(chars)] for sign, chars in groups.items()]

写法2:简洁性优先

from collections import defaultdict

a = {1: [['-','A'],['+','B'],['-','C']]}

a = {
    key: [
        [sign, ''.join(chars)] 
        for sign, chars in defaultdict(list, ((v[0], v[1]) for v in val)).items()
    ]
    for key, val in a.items()
}
# 若需强制保证正负都存在,可在推导前初始化包含'-'和'+'的分组字典

二、直接生成目标DataFrame(高效首选)

如果最终目标是生成DataFrame,无需先重构字典,直接用pandas的分组功能处理原始数据,效率更高且代码更简洁:

import pandas as pd

a = {1: [['-','A'],['+','B'],['-','C']]}

# 1. 展开原始字典为扁平列表
raw_data = []
for col1, items in a.items():
    for col2, col3 in items:
        raw_data.append([col1, col2, col3])

# 2. 转临时DataFrame并分组拼接字符
df = pd.DataFrame(raw_data, columns=['Col1', 'Col2', 'Col3'])
df = df.groupby(['Col1', 'Col2'])['Col3'].agg(''.join).reset_index()

# 3. 确保正负符号都存在(即使对应字符为空)
full_groups = pd.MultiIndex.from_product(
    [df['Col1'].unique(), ['-', '+']],
    names=['Col1', 'Col2']
)
df = df.set_index(['Col1', 'Col2']).reindex(full_groups, fill_value='').reset_index()

运行后得到的DataFrame结构如下:

Col1Col2Col3
1-AC
1+B

这种方法跳过了字典的中间转换,利用pandas的向量化操作,在数据量较大时性能优势更明显。

内容的提问来源于stack exchange,提问作者b1717

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 14:28:13