zoukankan      html  css  js  c++  java
  • python 数据分类

    #!/usr/bin/env python
    # coding: utf-8
    
    import six
    from functools import partial
    from itertools import groupby
    
    def sort_items_by_key(items, key):
        result = {}
        for k, v in key.items():
            ret = {}
            if isinstance(v, (six.string_types, six.integer_types)):
                tmp = filter(lambda x: x.get(k) == v, items)
                ret.setdefault(v, []).extend(tmp)
            elif isinstance(v, (list, set, tuple)):
                for vv in v:
                    tmp = filter(lambda x: x.get(k) == vv, items)
                    ret.setdefault(vv, []).extend(tmp)
            result.setdefault(k, []).append(ret)
        return result
    
    
    def test_items_key():
        items = [
            {"id": 1, "name": "atom", "age": 2},
            {"id": 2, "name": "shylock", "age": 26},
            {"id": 3, "name": "john", "age": 26}
        ]
    
        key = {"id": [1,2,3], "age": 26}
    
        print(sort_items_by_key(items, key))
    
    def sort_key(item, key):
        return item.get(key)
    
    def test_items_key_groupBy():
        result = {}
        items = [
            {"id": 1, "name": "atom", "age": 25},
            {"id": 1, "name": "shylock", "age": 26},
            {"id": 3, "name": "john", "age": 26}
        ]
        for key in ["id", "age"]:
            func = partial(sort_key, key=key)
            result[key] = [{condition: list(numbers)} for condition, numbers in groupby(items, func)]
        print result
    
    if __name__ == "__main__":
        test_items_key()
        print("-"*10)
        test_items_key_groupBy()
    output:
    {'age': [{26: [{'age': 26, 'id': 2, 'name': 'shylock'}, {'age': 26, 'id': 3, 'name': 'john'}]}], 'id': [{1: [{'age': 2, 'id': 1, 'name': 'atom'}], 2: [{'age': 26, 'id': 2, 'name': 'shylock'}], 3: [{'age': 26, 'id': 3, 'name': 'john'}]}]}
    ----------
    {'age': [{25: [{'age': 25, 'id': 1, 'name': 'atom'}]}, {26: [{'age': 26, 'id': 1, 'name': 'shylock'}, {'age': 26, 'id': 3, 'name': 'john'}]}], 'id': [{1: [{'age': 25, 'id': 1, 'name': 'atom'}, {'age': 26, 'id': 1, 'name': 'shylock'}]}, {3: [{'age': 26, 'id': 3, 'name': 'john'}]}]}
  • 相关阅读:
    python 时间差计算
    NET Framework 4.5新特性 (一) 数据库的连接加密保护。
    某表含有N个字段超精简模糊查询方法
    清空javascript数组数据
    IIS无法连接LocalDb,怎么办?
    jquery 模糊查询对象属性
    解释杨中科随机数为什么会骗人?
    前端Js传递数组至服务器端
    javascript获取客户端默认打印机
    水晶报表注意的问题
  • 原文地址:https://www.cnblogs.com/jachin/p/7492262.html
Copyright © 2011-2022 走看看