如何修复Python中列表理解错误的dictionary.values方法?
目标是收集银行余额为正的人的姓名,并使用Python打印出来如何修复Python中列表理解错误的dictionary.values方法?,python,dictionary,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]) i
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)
这是如何导致类型错误的:不支持+:“int”和“list”的操作数类型
我不确定哪里出了问题,请任何人提出建议
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
这将为您提供您想要的:
result = [n for n, v in bank_accounts.items() if sum(v) > 0]
这将为结果产生以下结果:
['Tom', 'Harry']
为什么要使用get
?您可以只索引目录。get
用于在不存在键的情况下需要一些默认值的情况。此外,由于原始代码直接打印列表,因此将其更改为使用,'。join
或'\n。join
似乎不合适。习惯的力量;是的,你只需要银行账户[i]
谢谢!这就是我要找的。