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

如何在Python中按用户ID(UUID)分组生成价格列表?

Python按用户ID分组生成价格列表的实现方法

当然可以实现,以下是几种常用的实现方式:

方法一:手动遍历构建字典

直接循环遍历数据,逐个将价格添加到对应ID的列表中:

data = [
    {"id": "1", "price": 1},
    {"id": "1", "price": 10},
    {"id": "2", "price": 3},
    {"id": "1", "price": 10},
    {"id": "2", "price": 8},
]

result = {}
for item in data:
    user_id = item["id"]
    price = item["price"]
    # 若ID不在结果字典中,先初始化空列表
    if user_id not in result:
        result[user_id] = []
    result[user_id].append(price)

print(result)
# 输出: {'1': [1, 10, 10], '2': [3, 8]}

方法二:使用collections.defaultdict简化代码

借助defaultdict可以省去判断ID是否存在的步骤,直接追加元素:

from collections import defaultdict

data = [
    {"id": "1", "price": 1},
    {"id": "1", "price": 10},
    {"id": "2", "price": 3},
    {"id": "1", "price": 10},
    {"id": "2", "price": 8},
]

result = defaultdict(list)
for item in data:
    result[item["id"]].append(item["price"])

# 若需要转为普通字典,执行 dict(result) 即可
print(dict(result))
# 输出: {'1': [1, 10, 10], '2': [3, 8]}

方法三:使用itertools.groupby分组

注意使用groupby前需要先按ID排序,因为它只会对连续的相同键进行分组:

from itertools import groupby

data = [
    {"id": "1", "price": 1},
    {"id": "1", "price": 10},
    {"id": "2", "price": 3},
    {"id": "1", "price": 10},
    {"id": "2", "price": 8},
]

# 先按ID排序
sorted_data = sorted(data, key=lambda x: x["id"])
result = {}
for user_id, group in groupby(sorted_data, key=lambda x: x["id"]):
    # 从分组中提取所有价格
    result[user_id] = [item["price"] for item in group]

print(result)
# 输出: {'1': [1, 10, 10], '2': [3, 8]}

关于UUID类型ID的说明

实际使用UUID作为用户ID时,上述方法完全适用——UUID是可哈希类型,可以直接作为字典的键,无需额外处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:45:35