Python有关dict、list、tuple技巧

这篇博客介绍了如何处理字典类型元素的列表,包括利用元组化字典的items进行去重以及将数据转换为树形结构。通过示例代码展示了如何使用Python内置函数和deepcopy方法实现这两个功能,适用于处理具有层级关系的数据。
  1. 为列表项为dict类型的列表去重
 x = []
 x.append({"name": "apple", 'level': 1, "id": 1, "parent_id": 0})
 x.append({"name": "apple", 'level': 1, "id": 1, "parent_id": 0})
 x.append({"name": "apple", 'level': 2, "id": 2, "parent_id": 1})
 x = [dict(t) for t in set([tuple(d.items()) for d in x])]
  1. dict 类型的 list 转树形结构
import copy


def treeify(lst):
    tree = get_children(0, lst)
    return tree


def get_children(parent_id, list):
    result = []
    for item in list:
        node = copy.deepcopy(item)
        if parent_id == item['parent_id']:
            children = get_children(item['id'], list)
            node['children'] = children
            result.append(node)
    return result


if __name__ == '__main__':
    x = []
    x.append({'name': '2', 'level': 2, 'no': '002', 'id': 8, 'parent_id': 1})
    x.append({'name': '4', 'level': 4, 'no': '004', 'id': 56, 'parent_id': 9})
    x.append({'name': '3', 'level': 3, 'no': '003', 'id': 9, 'parent_id': 8})
    x.append({'name': '1', 'level': 1, 'no': '001', 'id': 1, 'parent_id': 0})
    x.append({'name': '5', 'level': 5, 'no': '005', 'id': 689, 'parent_id': 56})
    # 1.删除重复的数据
    x = [dict(t) for t in set([tuple(d.items()) for d in x])]
    # 2.转为树形结构
    tree = treeify(x)
    print(tree)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值