Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复Python中列表理解错误的dictionary.values方法?_Python_Dictionary - Fatal编程技术网

如何修复Python中列表理解错误的dictionary.values方法?

如何修复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

目标是收集银行余额为正的人的姓名,并使用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)
这是如何导致类型错误的:不支持+:“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]
谢谢!这就是我要找的。