如何修复字典.values方法以解决Python中的列表理解错误?

时间:2019-05-25 02:13:35

标签: python dictionary

目标是收集银行存款余额为正的人的姓名,并使用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”

我不确定出什么问题了,有人可以建议吗?

3 个答案:

答案 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))