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

Python中按类型分组合并字典列表的代码逻辑咨询

字典列表分组合并方案

原始输入

original_list = [
    {'fruit':'Apple', 'Color':'red', 'weight':'10'},
    {'fruit':'Banana', 'Color':'yellow', 'weight':'20'},
    {'fruit':'Kiwi', 'Color':'Green', 'weight':'15'},
    {'Veggie':'Onion', 'Color':'white', 'price':'10'},
    {'Veggie':'Cabbage', 'Color':'Light Green', 'price':'30'},
    {'Leafy':'Spinach', 'Color':'Dark Green', 'quantity':'30'}
]

目标输出

target_list = [
    {'Fruit':['Apple', 'Banana', 'Kiwi'], 'Color':['red', 'yellow', 'Green'], 'weight':['10','20','15']},
    {'Veggie':['Onion', 'Cabbage'], 'Color':['white', 'Light Green'], 'price':['10','30']},
    {'Leafy':['Spinach'], 'Color':['Dark Green'], 'quantity':['30']}
]

实现思路

  • 核心是按字典的「类型键」分组:每个原始字典里,除了Color外,都有一个独有的「类型标识键」(比如fruit、Veggie、Leafy),以此作为分组依据。
  • 用临时字典存储分组结果,键为处理后的类型键(首字母大写),值为该组的合并字典(每个键对应一个列表)。
  • 遍历原始列表,将每个字典的键值对追加到对应分组的列表中,同时统一类型键的大小写格式。

代码实现

original_list = [
    {'fruit':'Apple', 'Color':'red', 'weight':'10'},
    {'fruit':'Banana', 'Color':'yellow', 'weight':'20'},
    {'fruit':'Kiwi', 'Color':'Green', 'weight':'15'},
    {'Veggie':'Onion', 'Color':'white', 'price':'10'},
    {'Veggie':'Cabbage', 'Color':'Light Green', 'price':'30'},
    {'Leafy':'Spinach', 'Color':'Dark Green', 'quantity':'30'}
]

# 临时字典,用于按类型键分组存储结果
grouped_dict = {}

for item in original_list:
    # 提取当前字典的类型键(排除Color)
    type_key = next(k for k in item.keys() if k != 'Color')
    # 处理类型键首字母大写(比如fruit → Fruit)
    formatted_type = type_key.capitalize()

    # 如果该类型还未初始化分组,创建空列表结构
    if formatted_type not in grouped_dict:
        # 为当前组的所有键初始化空列表
        grouped_dict[formatted_type] = {key: [] for key in item.keys()}
        # 替换类型键为大写后的版本
        grouped_dict[formatted_type][formatted_type] = grouped_dict[formatted_type].pop(type_key)
    
    # 将当前字典的所有值追加到对应分组的列表中
    for key, value in item.items():
        # 匹配正确的键名(类型键用大写后的版本)
        target_key = formatted_type if key == type_key else key
        grouped_dict[formatted_type][target_key].append(value)

# 把分组字典的取值转换为列表,得到最终结果
final_result = list(grouped_dict.values())
print(final_result)

代码说明

  1. 提取类型键:通过next(k for k in item.keys() if k != 'Color')快速定位每个字典的类型标识键,因为每个字典除了Color外只有一个唯一类型键。
  2. 初始化分组:首次遇到某类型键时,为该组的所有键创建空列表,并将类型键替换为首字母大写的格式。
  3. 追加数据:遍历当前字典的键值对,把值追加到对应分组的列表中,确保类型键使用统一的大写格式。
  4. 生成结果:将分组字典的所有值提取为列表,就得到了目标格式的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 16:57:02