我想删除描述事务的元组列表中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)
答案 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)
。
虽然这是更多的代码,但它是有利的,因为当您需要其他地方的结果并且您不想更改您的交易列表时,您可以使用此功能。此外,列表理解通常更加明确。