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

Python3中将列表按指定参数键转换为嵌套字典的实现方案咨询

解决方案

直接给出通用实现的函数,支持任意层数的自定义分组:

def nested_group(data, group_keys):
    result = {}
    for item in data:
        current = result
        # 遍历除最后一个外的所有分组键,构建嵌套字典层级
        for key in group_keys[:-1]:
            k_val = item[key]
            if k_val not in current:
                current[k_val] = {}
            current = current[k_val]
        # 最后一个分组键对应的值为列表,存储当前元素
        last_k_val = item[group_keys[-1]]
        if last_k_val not in current:
            current[last_k_val] = []
        current[last_k_val].append(item)
    return result

调用示例

# 原始输入数据
arr = [
    {'Hotel':'Hotel 1', 'Room':'Room 1', 'Board':'Board 1', 'Precio':100},
    {'Hotel':'Hotel 1', 'Room':'Room 1', 'Board':'Board 2', 'Precio':130},
    {'Hotel':'Hotel 1', 'Room':'Room 2', 'Board':'Board 1', 'Precio':230},
    {'Hotel':'Hotel 1', 'Room':'Room 2', 'Board':'Board 2', 'Precio':300},
    {'Hotel':'Hotel 2', 'Room':'Room 4', 'Board':'Board 1', 'Precio':111},
    {'Hotel':'Hotel 2', 'Room':'Room 2', 'Board':'Board 2', 'Precio':400},
    {'Hotel':'Hotel 2', 'Room':'Room 1', 'Board':'Board 2', 'Precio':230}
]

# 按 Hotel -> Room -> Board 三层分组
output = nested_group(arr, ['Hotel', 'Room', 'Board'])

验证输出

调用后output的结构完全符合需求,比如取output['Hotel 1']['Room 2']['Board 2']会得到:

[{'Hotel': 'Hotel 1', 'Room': 'Room 2', 'Board': 'Board 2', 'Precio': 300}]

该函数支持任意层数的分组,只需要调整group_keys参数的列表即可,比如只需按酒店和房间两层分组,传入['Hotel', 'Room']即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:27:00