Skip to main content
 首页 » 编程设计

python之在 python 中转换列表

2025年05月04日20lvdongjie

大家好我有一个json

[{"seller_id": 3, "item": {"product_id": 4, "amount": 1, "id": 9}}, 
 {"seller_id": 1, "item": {"product_id": 1 , "amount": 2, "id": 10}}, 
 {"seller_id": 3, "item": {"product_id": 3, "amount": 2, "id": 11}}, 
 {"seller_id ": 1," item ": {" product_id ": 2," amount ": 2," id ": 12}}] 

我想组合在一起,这意味着相同的卖家会再次对商品进行分组

返回结果如下:

[{"seller_id": 3, "list_item": [{"product_id": 4, "amount": 1, "id": 9}, 
 {"product_id": 3, "amount": 2, "id": 11}]}, 
 {"seller_id": 1, "list_item": [{"product_id": 1, "amount": 2, "id": 10}, 
 {"product_id": 1, "amount": 2, "id": 10}, {"product_id": 2, "amount": 2, "id": 12}]}] 

谁有想法?

请您参考如下方法:

使用 itertools.groupby (并假设一些键和值周围的奇怪间距是偶然的):

from itertools import groupby 
values = [{"seller_id": 3, "item": {"product_id": 4, "amount": 1, "id": 9}}, 
          {"seller_id": 1, "item": {"product_id": 1, "amount": 2, "id": 10}}, 
          {"seller_id": 3, "item": {"product_id": 3, "amount": 2, "id": 11}}, 
          {"seller_id": 1, "item": {"product_id": 2, "amount": 2, "id": 12}}] 
 
def get_seller_id(d): 
    return d['seller_id'] 
 
groups = [] 
for seller_id, items in groupby(sorted(values, key=get_seller_id), get_seller_id): 
    groups.append({'seller_id': seller_id, 'list_item': list(items)}) 
 
print(groups)