精华内容
下载资源
问答
  • python使用嵌套序列

    千次阅读 2016-05-10 11:05:11
    创建嵌套序列 嵌套列表或元组的创建方法跟普通列表或元组差不多:输入各个元素,并以逗号隔开。区别在于嵌套序列的元素可以是整个列表或元组。 nested=["first",("second","third"),["fourth",

    列表和元组都可以存放任何类型的数据,列表可以含有其他的列表或元组,元组也可以含有其他的元组或列表。这叫嵌套序列。嵌套序列就是序列中有序列,它是组织复杂信息的好办法。

    创建嵌套序列

    嵌套列表或元组的创建方法跟普通列表或元组差不多:输入各个元素,并以逗号隔开。区别在于嵌套序列的元素可以是整个列表或元组。

    nested=["first",("second","third"),["fourth","fifth","sixth"]]
    print(nested)
    输出:


    虽然可以用任意数量的列表和元组来创建嵌套序列,但最好还是使用一致的模式。

    scores=[("zhang",100),("wang",98),("li",78)]
    print(scores)
    
    输出:


    访问嵌套元素

    访问嵌套序列中的元素跟访问普通序列的一样,都是用索引:

    scores=[("zhang",100),("wang",98),("li",78)]
    print(scores[0])
    print(scores[0][0])
    
    输出:


    序列的解包

    如果已经知道序列中有多少个元素,就可以在一行代码中将它们分别赋值给相应的变量:

    name,score=("shemp",175)
    print(name)
    print(score)
    输出:


    就就叫解包(unpacking),它对任何序列类型都有效。但是要记住,变量的数量要跟序列中的元素数量相等,否则就会产生错误。



    展开全文
  • drf嵌套序列

    2020-06-11 12:11:26
    在我们序列化的过程中,肯定会遇到嵌套序列化,不管是一对多嵌套还是多对一嵌套,在序列化器中我们使用参数source就解决了,为了解决N+1问题,我们使用select_related和prefetch_related就可以解决,但是还有一个...

    在我们序列化的过程中,肯定会遇到嵌套序列化,不管是一对多嵌套还是多对一嵌套,在序列化器中我们使用参数source就解决了,为了解决N+1问题,我们使用select_related和prefetch_related就可以解决,但是还有一个问题就是在嵌套的过程中我们要对第二个序列化器的数据进行筛选,比如要id_delete=False,怎么办那?
    解决办法:

    class FilterdListSerializer(ListSerializer):
        def to_representation(self, data): # data为试图中传递过来的数据
            data = data.filter(is_del=False)   # 过滤已删除的
            return super().to_representation(data)
    
    class GradeSerializer(ModelSerializer):
        student = StudentSerializer(many=True)
    
        class Meta:
            model = Grade
            fields = ('name', 'is_del', 'student')
            list_serializer_class = FilterdListSerializer
    
    
    class SchoolSerializer(ModelSerializer):
        grade = GradeSerializer(many=True)
    
        class Meta:
            model = School
            fields = ('name', 'is_del', 'grade')
    
    展开全文
  • 代码如下: ...#展开嵌套序列 序列的子序列进行展开 print '----递归' def list_or_tuple(x): return isinstance(x,(list,tuple)) def flatten(sequence, to_expand=list_or_tuple): for item in sequ

    代码如下:

    #encoding=utf-8
    
    print '中国'
    
    #展开嵌套序列 序列的子序列进行展开
    
    print '----递归'
    def list_or_tuple(x):
        return isinstance(x,(list,tuple))
    
    def flatten(sequence, to_expand=list_or_tuple):
        for item in sequence:
            if to_expand(item):
                for subitem in flatten(item,to_expand):
                    yield subitem
            else:
                yield item
                
    
    lista=[[1,2,[3,4,[5,6]]],7,8,(9,10,(11,12))]
    
    for idx,item in enumerate(flatten(lista)):
        print idx,item
        
    print '----非递归 链表'
    
    def flatten2(sequence, to_expand=list_or_tuple):
        iterators = [ iter(sequence) ]
        while iterators:       
            for item in iterators[-1]:
                if to_expand(item):                
                    iterators.append(iter(item))
                    break
                else:
                    yield item
            else:            
                iterators.pop( )
    
    
    for idx,item in enumerate(flatten2(lista)):
        print idx,item
        
    
    打印结果如下:

    中国
    ----递归
    0 1
    1 2
    2 3
    3 4
    4 5
    5 6
    6 7
    7 8
    8 9
    9 10
    10 11
    11 12
    ----非递归 链表
    0 1
    1 2
    2 3
    3 4
    4 5
    5 6
    6 7
    7 8
    8 9
    9 10
    10 11
    11 12

    展开全文
  • serializer嵌套序列

    千次阅读 2017-08-05 18:57:27
    场景描述:以前用序列化做比较简单的传递需要展示的数据,现在需要在一个序列化里面嵌套另外一个序列化。试一下serializer更多的玩法 * 业务逻辑基本介绍: 房间与车位间一对多关系,车位与房间存在外键关联,...

    场景描述:

    以前用序列化做比较简单的传递需要展示的数据,现在需要在一个序列化里面嵌套另外一个序列化。试一下serializer更多的玩法

    • 业务逻辑基本介绍:
      房间与车位间一对多关系,车位与房间存在外键关联,现在查询房间,需要将与房间关联的车位的详细信息一起返回前端

    主要思路:

    • 实现两个两个序列化,一个主要序列化 room 信息,一个主要序列化 parking (车位)
    • 先将初始的结果集传递进serializer,然后通过SerializerMethod来实现嵌套序列化

    主要矛盾:

    在SerialzierMethod实现序列化的时候,怎么将相关的值传递进来.(举例子,这里)

        def get_parkings(self, obj):
            # 想想obj是啥
            park = Parking.objects.filter(room=obj.id)
            return ParklingSer(park, many=True).data
        
    def get_effective_time(self, obj):
        date = obj.effective_time
        return date.strftime("%Y-%m-%d")
    

    这时候就有几个地方捋清楚了:

    class RoomPropertySer(serializers.ModelSerializer):
        effective_time = serializers.SerializerMethodField()
        parkings = serializers.SerializerMethodField()
        is_expired = serializers.SerializerMethodField()
        ...
    
        class Meta:
            model = Room
            fields = ('name', 'uuid', 'base_property_fee','base_elevator_fee',
                      'payment_of_last_time', 'effective_time', 'is_expired',
                      'property_fee_time_limit', 'parking_sever_fee_time_limit',
                      'parking_leasing_fee_time_limit', 'parkings')
    
    • 这几个地方的具体作用是了解serializer比较重要的地方

    开始分析

    我会将我的想法以及打印出来的结果和大家一起分享…

    第一部分:

    回到第一部分的代码中,obj是个啥?

    打印出来看下:

    <class ‘community.models.Room’>

    这样就很好处理了,因为车位的信息,需要通过房间的id来获取,重新格式化时间输出的格式也需要原本的时间数据,代码就是这么写的

    看起来很简单吗,没有更难的了吗

    当然,以上是最简单的。主要原因是传递进来的是一个对象,需要的数据obj都有了,想想如果传递进来的是纯的字典类型数据,情况会这样?
    这个下一节继续…

    扩展:

    • fields在这里是干嘛的

    用来规定能传递出去,需要序列化的数据
    而SerialzierMethod相当于自定义了需要传递出去的字段,然后将它放进fields里,就能传递出去了

    展开全文
  • DRF序列化关于嵌套序列化极其消耗性能问题的解决 DRF序列化给我们提供了一个很方便的序列化与反序列化的方法,但是如果在序列化器中使用嵌套,会极其消耗性能。 class Qctestroombeta(BaseModel): id = models....
  • Android通过Parcelable和Serializable实现各种类型嵌套序列
  • 但是当服务间调用时,含有内部类嵌套的dto无法被序列化,导致接口请求接口正常返回,但是无法被正常接收。 原因 对于内部类来说,静态的内部类才可以被序列化,而内部类不能被序列化!!! 参考链接:...
  • django: django rest framework 嵌套序列

    千次阅读 2018-07-10 21:14:24
    django: django rest framework 嵌套序列化 django rest framework序列化在其他的章节中进行了讲解,
  • DjangoRestful 递归嵌套序列化器实现

    千次阅读 2019-04-21 15:23:41
    Django嵌套递归序列化器实现 最近在做自己的项目,需要返回评论表相关数据,我的评论表设计的是这样的,父id为空则是等级最高的父评论,然后依次为子、孙子。。。评论信息关联,类似于省市级三级联动,不过这个评论...
  • 在对象A的属性中有list对象B,在使用Gson反序列化时对象B无法正确反序列化。反序列化出来的值都是LinkedTreeMap 解决办法,自定义工具类: import com.google.gson.{Gson, JsonArray, JsonParser} import ...
  • ####### 如果需要序列化的数据中包含有其他关联对象,则对关联对象数据的序列化需要指明。 例如,在定义英雄数据的序列化器时,外键hbook(即所属的图书)字段如何序列化? # 为多对一关系 # 多 # class ...
  • 定义好了序列化器后有没有遇到过想要序列化的数据表中有外键的情况,我们需要的这个和外键关联的数据 model.py # 报警表 class Police(models.Model): # 报警类型 police = models.CharField(max_length=50) # ...
  • 给一个嵌套整数序列,请你返回每个数字在序列中的加权和,它们的权重由它们的深度决定。 序列中的每一个元素要么是一个整数,要么是一个序列(这个序列中的每个元素也同样是整数或序列)。 与 前一个问题 不同的是...
  • Rest Framework 关联对象嵌套序列

    千次阅读 2019-04-16 18:24:22
    关联对象嵌套序列化 如果需要序列化的数据中包含有其他关联对象,则对关联对象数据的序列化需要指明。 例如,在定义英雄数据的序列化器时,外键Type(即所属的分类)字段如何序列化? 对于关联字段,可以...
  • 给一个嵌套整数序列,请你返回每个数字在序列中的加权和,它们的权重由它们的深度决定。 序列中的每一个元素要么是一个整数,要么是一个序列(这个序列中的每个元素也同样是整数或序列)。 与 前一个问题 不同的是,...
  • 展开嵌套序列

    2020-01-07 17:08:02
    你想将一个多层嵌套序列展开成一个单层列表 解决方案 可以写一个包含 yield from 语句的递归生成器来轻松解决这个问题。比如: from collections import Iterable def flatten(items, ignore_types=(str, bytes))...
  • 嵌套对象序列化 与简单对象序列化基本一致,会把 嵌套对象作为一个json 的 子 json对象 如下格式 inner 为 嵌套对象的属性名 { "nick": "A", "mobile": "B", &...
  • 4.14 展开嵌套序列 一 问题 如果有一个列表里面有嵌套列表,如果把它展开在同一个列表中的呢? 参考文档 ...
  • 会生成一个新的序列和之前的序列命名一样,内容上,新建的序列包含旧的序列(嵌套序列包含主序列,主序列中是具体的素材) 2)在序列中选中所有的素材,右键鼠标,选择嵌套 新建的序列中是具体的素材 3)在...
  • VBA嵌套字典的反序列化 作者:Antoniothefuture 关键词:VBA、VB、字典、Dictionary、反序列化、嵌套 开发平台:VBE 平台版本上限:未知 平台版本下限:未知 开发语言:VBA 简介: 将表示VBA嵌套字典的字符串...
  • 问题分析:利用过程嵌套递归计算fibonacci序列 输入样例:n=5; 输出样例:fib(n)=5; 设计思路 设计思路:利用过程递归调用功能,直接或者间接的调用自身。为了保证每次调用能正确保留断点信息并返回断点...
  • namespaceConsoleApplication1 { classProgram { staticvoidMain(string[]args) { stringjsonString="[{\"downList\":[],\"line\":{\"Id\":-1,\"Name\":\"ad...
  • 序列化单个实体对象 (1)将本地文件中的数据反序列化成实体对象 (2)将实体对象序列化 .txt中json格式的数据为:{"Name":"张三","Age":20,"Address":"上海市徐汇区"} 第一步: 添加dll引用:Newtonsoft.Json.dll...
  • DRF Writable Nested 是Django REST框架的可写嵌套模型序列化器,它允许您使用相关嵌套数据创建/更新模型。 支持下列关系: OneToOne (direct/reverse)-----一对一(直接的/反向) ForeignKey (direct/reverse)-----一...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 131,245
精华内容 52,498
关键字:

如何创建嵌套序列