python将列表转化为字典结构,相同Key的放入value列表中

Python 专栏收录该内容
8 篇文章 0 订阅

将列表按照其中元素对象的某一属性为key 转化为字典结构,相同Key的对象放入value列表中

代码示例:

# coding=utf-8
import json

class Person:
    def __init__(self, name, age, id):
        self.name = name
        self.age = age
        self.id = id

    def __str__(self):
        return '姓名:%s  年龄:%d id:%d' % (self.name, self.age, self.id)

p1 = Person("Mi", 36, 101)
p2 = Person("Li", 38, 101)
p3 = Person("Lin", 37, 102)
p4 = Person("Fei", 32, 103)
p5 = Person("Yun", 27, 102)

lst = [p1, p2, p3, p4, p5]
dict = {}
for p in lst:
    if p.id in dict:
        tmp = {}
        tmp["name"] = p.name
        tmp["age"] = p.age
        dict.get(p.id).append(tmp)
    else:
        tmp ={}
        tmp["name"] = p.name
        tmp["age"] = p.age
        pl = [tmp]
        dict[p.id] = pl

result = []
for key, value in dict.items():
    result.append({
        "id": key,
        "name": value[0]["name"],
        "list": value
    })

json_string = json.dumps(result)

print(json_string)

结果:

[{"list": [{"age": 36, "name": "Mi"}, {"age": 38, "name": "Li"}], "id": 101, "name": "Mi"}, {"list": [{"age": 37, "name": "Lin"}, {"age": 27, "name": "Yun"}], "id": 102, "name": "Lin"}, {"list": [{"age": 32, "name": "Fei"}], "id": 103, "name": "Fei"}]

 

  • 0
    点赞
  • 1
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值