为什么退货时不显示?我得到了记忆的位置

2024-03-28 12:57:38 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我要做的是显示支出列表中属于同一类别的所有项目,然后是每个类别的合计,最后是总体合计。例如:

$12.00 Mon, 12 Aug 2019 Food
$15.25 Mon, 12 Aug 2019 Food
Total for Food = $27.25
$8.40 Wed, 14 Aug 2019 Drinks
Total for Drinks = $8.40
$33.00 Tue, 13 Aug 2019 Entertainment
Total for Entertainment = $33.00
Overall Total = $178.55
class ExpenditureList:
    _types = ['Food','Entertainment', 'Drinks']
    def __init__(self):
        self._expenditures = []

    @classmethod
    def ExpenditureTypes(cls):
        return cls._types

    def __str__(self):
        exp = {}
        temp = None
        for types in ExpenditureList._types:
            exp[types] = {'item': []}
            exp[types]['Amount'] = []
        for item in self._expenditures:
            if item._type == ExpenditureList._types[0]:
                exp[item._type]['item'].append(item)
                exp[item._type]['Amount'].append(item._amount)
            elif item._type == ExpenditureList._types[1]:
                exp[item._type]['item'].append(item)
                exp[item._type]['Amount'].append(item._amount)
            elif item._type == ExpenditureList._types[2]:
                exp[item._type]['item'].append(item)
                exp[item._type]['Amount'].append(item._amount)
        for k,v in exp.items():
            if temp == None:
                temp = f"{v['item']}\n"
            else:
                temp = temp + f"{v['item']}\n"
        return temp

根据以前的评论作了一些改动


Tags: selfforfooddeftypeitemamounttemp
1条回答
网友
1楼 · 发布于 2024-03-28 12:57:38

你的问题是这两行(加上其他几个点):

exp[types] = []
exp[types]['Amount'] = []

导致错误的最小示例:

exp = {}
exp['test'] = []
# exp = {'test': []}
exp['test']['Amount'] = [] # Amount throws an error because exp['test'] is a list.

我想你的意思是:

exp[types] = {}
exp[types]['Amount'] = []

但你的另一个逻辑却令人困惑:

# Here you assume exp[item._type] is of type list because you use append on it
exp[item._type].append(item)

# But here you assume exp[item._type] is of type dict because you call ['Amount'] on it...
exp[item._type]['Amount'].append(item._amount)

相关问题 更多 >