我无法解决TypeError:' int'对象不可订阅

时间:2016-10-28 14:19:28

标签: python list runtime-error tuples

我想删除描述事务的元组列表中day1和day2之间的所有事务。交易有金额,日期和类型。当我运行这个时,我收到错误

  

" TypeError:' int'对象不是可订阅的"第4行。

有人能帮助我吗?

def delete_periodoftime(transactions, day1, day2):
    for i,transaction in enumerate(transactions):
        if i['Day']<=day1 or i['Day']<=day2:
            transactions.remove(i)

1 个答案:

答案 0 :(得分:0)

看起来您正试图在当天过滤这些交易。另一个好方法是使用列表理解。

def delete_periodoftime(transactions, day1, day2):
    return [t for t in transactions if t['Day'] <= day1 or t['Day'] <= day2]

这与当前代码的区别在于,这是创建并返回一个新列表而不是改变传递给函数的列表。

因此,如果您调用delete_periodoftime(my_transactions, my_day1, my_day2)之类的函数,则现在需要将其称为my_transactions = delete_periodoftime(my_transactions, my_day1, my_day2)

虽然这是更多的代码,但它是有利的,因为当您需要其他地方的结果并且您不想更改您的交易列表时,您可以使用此功能。此外,列表理解通常更加明确。