<p>这是以类似于我的<a href="https://stackoverflow.com/a/33214433/2617068">other answer here</a>的方式完成的。启动一个字典,然后在事务列表上循环,并为尚未在结果列表中的位置创建一个带有预初始化值的嵌套字典。你知道吗</p>
<pre><code>class Transaction:
def __init__(self, time, date ,weekday, duration, amount, _type, location):
self.time = time
self.date = date
self.weekday = weekday
self.duration = duration
self.amount = amount
self.type = _type
self.location = location
atm_transaction_list = [Transaction(0, 0, 0, 0, 0, 'balance', 'driveup'),
Transaction(0, 0, 0, 0, 0, 'withdrawal', 'driveup'),
Transaction(0, 0, 0, 0, 0, 'deposit', 'driveup'),
Transaction(0, 0, 0, 0, 0, 'advance', 'driveup'),
Transaction(0, 0, 0, 0, 0, 'advance', 'driveup'),
Transaction(0, 0, 0, 0, 0, 'transfer', 'driveup'),
Transaction(0, 0, 0, 0, 0, 'transfer', 'driveup'),
Transaction(0, 0, 0, 0, 0, 'withdrawal', 'campus'),
Transaction(0, 0, 0, 0, 0, 'deposit', 'campus'),
Transaction(0, 0, 0, 0, 0, 'advance', 'campus'),
Transaction(0, 0, 0, 0, 0, 'advance', 'campus'),
Transaction(0, 0, 0, 0, 0, 'advance', 'campus'),
Transaction(0, 0, 0, 0, 0, 'advance', 'campus'),
Transaction(0, 0, 0, 0, 0, 'transfer', 'campus'),
Transaction(0, 0, 0, 0, 0, 'transfer', 'campus'),
Transaction(0, 0, 0, 0, 0, 'transfer', 'campus')]
result = {}
for element in atm_transaction_list:
if element.location not in result:
result[element.location] = {'advance':0, 'balance':0, 'deposit':0, 'withdrawal':0, 'transfer':0, 'total':0}
result[element.location][element.type] += 1
</code></pre>
<p>结果如下:</p>
<pre><code>>>> result
{'driveup': {'deposit': 1, 'balance': 1, 'advance': 2, 'transfer': 2, 'total': 0, 'withdrawal': 1}, 'campus': {'deposit': 1, 'balance': 0, 'advance': 4, 'transfer': 3, 'total': 0, 'withdrawal': 1}}
</code></pre>
<p>您可以整齐地显示:</p>
<pre><code>print('Location | Advance | Balance | Deposit | Transfer | Withdrawal | Total')
for key in result:
print('{:<10} | {advance:^10} | {balance:^10} | {deposit:^10} | {transfer:^10} | {withdrawal:^10} | {total:^10}'.format(**result[key]))
</code></pre>
<p>结果:</p>
<pre><code>Location | Advance | Balance | Deposit | Transfer | Withdrawal | Total
driveup | 2 | 1 | 1 | 2 | 1 | 0
campus | 4 | 0 | 1 | 3 | 1 | 0
</code></pre>