首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么它只打印6个字段而不是7个python

为什么它只打印6个字段而不是7个python
EN

Stack Overflow用户
提问于 2017-11-21 13:34:03
回答 3查看 61关注 0票数 2

如何使用下面的代码获得第7条记录?

代码语言:javascript
复制
from pprint import pprint
def date_op(total_input_list):
    total_pages=36
    list=[]
    for xy in total_input_list:
        for i in range(1,len(xy)):
            Start_page=xy[i]["start_page"]
            End_page=xy[i+1]["start_page"]-1
            Date = xy[i]["date"]
            list.append(Date)
            date=set(list)
            d1 = [{i: {"start_page": Start_page, "end_page": End_page,"date":date}}]
            print(d1)

total_input_list=[{1:{"start_page":1,"end_page":None,"date":"10/12/2015"},
              2:{"start_page":4,"end_page":None,"date":"12/12/2015"},
              3:{"start_page":8,"end_page":None,"date":"22/1/2016"},
              4:{"start_page":15,"end_page":None,"date":"22/1/2016"},
              5:{"start_page":22,"end_page":None,"date":"22/1/2016"},
              6:{"start_page":24,"end_page":None,"date":"20/12/2016"},
              7:{"start_page":28,"end_page":None,"date":"26/2/2017"}}]
date_op(total_input_list)

我看到了这个输出

代码语言:javascript
复制
[{1: {'date': {'10/12/2015'}, 'end_page': 3, 'start_page': 1}}]
[{2: {'date': {'10/12/2015', '12/12/2015'}, 'end_page': 7, 'start_page': 4}}]
[{3: {'date': {'22/1/2016', '10/12/2015', '12/12/2015'}, 'end_page': 14, 'start_page': 8}}]
[{4: {'date': {'22/1/2016', '10/12/2015', '12/12/2015'}, 'end_page': 21, 'start_page': 15}}]
[{5: {'date': {'22/1/2016', '10/12/2015', '12/12/2015'}, 'end_page': 23, 'start_page': 22}}]
[{6: {'date': {'22/1/2016', '10/12/2015', '12/12/2015', '20/12/2016'}, 'end_page': 27, 'start_page': 24}}]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-11-21 13:41:25

因为迭代器在len(xy)之前停止

代码语言:javascript
复制
def date_op(total_input_list):
total_pages=36
list=[]
for xy in total_input_list:
    for i in range(1,len(xy)+1):
        Start_page=xy[i]["start_page"]
        if(i<len(xy)):
            End_page=xy[i+1]["start_page"]-1
        Date = xy[i]["date"]
        list.append(Date)
        date=set(list)
        d1 = [{i: {"start_page": Start_page, "end_page": End_page,"date":date}}]
        print(d1)

total_input_list=[{1:{"start_page":1,"end_page":None,"date":"10/12/2015"},
          2:{"start_page":4,"end_page":None,"date":"12/12/2015"},
          3:{"start_page":8,"end_page":None,"date":"22/1/2016"},
          4:{"start_page":15,"end_page":None,"date":"22/1/2016"},
          5:{"start_page":22,"end_page":None,"date":"22/1/2016"},
          6:{"start_page":24,"end_page":None,"date":"20/12/2016"},
          7:{"start_page":28,"end_page":None,"date":"26/2/2017"}}]
date_op(total_input_list)
票数 1
EN

Stack Overflow用户

发布于 2017-11-21 13:41:19

这看起来像一个经典的错位错误

7时间戳定义了6个持续时间。

要输出第一行,请执行以下操作:

代码语言:javascript
复制
[{1: {'date': {'10/12/2015'}, 'end_page': 3, 'start_page': 1}}]

您需要从dict的第一个和第二个值中获得信息。

票数 3
EN

Stack Overflow用户

发布于 2017-11-21 13:58:26

由于您要从下一个字段获得一个值,所以必须将下一个值从位置7设置为空,我假设最后一部分的end_page将为空,否则您所要做的就是更改next部分。

这解决了以下问题:

代码语言:javascript
复制
for i in range(1,len(xy)+1):
    Start_page=xy[i]["start_page"]
    try: 
      End_page=xy[i+1]["start_page"]-1 #from 1 to 6, the value comes from here
    except:
      End_page=None # when on field 7, value will come from here
    Date = xy[i]["date"]
    list.append(Date)
    date=set(list)
    d1 = [{i: {"start_page": Start_page, "end_page": End_page,"date":date}}]
    print(d1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47414418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档