【问题标题】:Python loop and if statment weird issuesPython循环和if语句奇怪的问题
【发布时间】:2017-11-27 19:27:53
【问题描述】:

好吧,我不明白发生了什么。我正在循环查询我的输出。一个非常正常的循环和 if。问题是当我尝试执行 results[o]

    for recordset in return_stored_procedure:
        results.append(dict(zip(sp_column_names, recordset)))
        if results[0]['days_column'] <= 30:
           print variable
        else:
           print variable

***更新*****
解决问题谢谢大家。现在进行了更正,我将从列表中删除我不想要的内容。

    for l in sp_results:
        if l['column'] < 30:
            newlist.append(l)

现在开始进行列表理解。而不是这个循环。

【问题讨论】:

  • 好吧,您总是检查results 中的第一项,它在您显示的循环中没有改变,所以没有理由期望检查会改变......跨度>
  • 另外,如果你说results[0]int 类型,那么results[0]['days_column'] 会抛出TypeError,因为int 对象不可下标。所以你的问题没有多大意义。我建议你提供一个minimal reproducible example
  • @juanpa.arrivillaga 您可以从之前的行中看到,OP 将dictionary 附加到results list(我认为):results.append(dict(...))
  • @JoeIddon 对,我明白了,但这不会改变索引 0 中的内容(可能是第一次迭代除外)。几乎可以肯定这不是 OP 想要的,同样,它与 OP 声称 results[0]int 的说法不一致
  • @juanpa.arrivillaga 啊,是的,我没有考虑第一个index

标签: python loops if-statement sap-ase


【解决方案1】:

很难确切地说出你想要什么,但我假设你想检查dict 中的data_column key,你只有appendedresults。同样,我不确定这是否是所需的,但您可以通过采用 index-1 来从 results 获取最后一个元素:

for recordset in return_stored_procedure:
    results.append(dict(zip(sp_column_names, recordset)))
    if results[-1]['days_column'] <= 30:
       print variable
    else:
       print variable

【讨论】:

  • 我已经实现了我的目标。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-28
  • 1970-01-01
  • 2017-08-20
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多