目标是收集银行存款余额为正的人的姓名,并使用Python将其打印出来。
bank_accounts = {
'Tom': [0, 1, 5, 3],
'Jerry': [0, -1, -7, 3],
'Harry': [0, 1, 2, 3],
}
这是建议的解决方案,但是我正在尝试使用列表理解将其压缩为一行。
result = []
for i in bank_accounts.items():
name = i[0]
balance = sum(i[1])
if balance > 0:
result.append(name)
print(result)
我希望实现的单行代码。
names = [i for i in bank_accounts if sum(bank_accounts.values()) >0]
print(names)
这如何导致TypeError:+不支持的操作数类型:“ int”和“ list”
我不确定出什么问题了,有人可以建议吗?
答案 0 :(得分:1)
这将为您提供想要的东西:
result
这将为['Tom', 'Harry']
生成以下内容:
2,4,6,8
答案 1 :(得分:0)
names = [i for i in bank_accounts if sum(bank_accounts[i]) > 0]
print(names)
您可以简单地将字典中的内容汇总在列表中...
>>> bank_accounts.get('Tom')
[0, 1, 5, 3]
>>> sum(bank_accounts.get('Tom', []))
9
答案 2 :(得分:0)
尝试使用发电机-
print(next(name for name, balance in bank_accounts.items() if sum(balance) > 0))