Jwe*_*och 4 python dictionary loops for-loop python-2.7
我有2个词典:
budgets = {'Engineering': 4500.0,
'Marketing': 5000.0,
'Operations': 3000.0,
'Sales': 2000.0}
spending = {'Engineering': 5020.0,
'Marketing': 1550.0,
'Operations': 3670.0,
'Sales': 3320.0}
Run Code Online (Sandbox Code Playgroud)
我试图遍历它们,并找出哪些值spending大于值budgets.我目前写道:
for value in spending.values():
if value in spending.values() > budgets.values():
print 'Over Budget'
else:
print 'Under Budget'
Run Code Online (Sandbox Code Playgroud)
然而,当我运行它时,它们都打印出来Over Budget,但事实并非如此.有人可以解释我接近这个错误吗?
谢谢 :)
该部分value in spending.values() > budgets.values()实际上评估布尔查询value in spending.values()- 成员资格检查 - 然后将其结果与budget.values():来自的值进行比较budget.在Python中,可以比较所有内容,因此您将布尔值与列表进行比较 - 每次都是相同的,在您的情况下评估为True.你想要的更像是这样的:
for key in spending:
if spending[key] > budgets[key]:
print('Over Budget')
else:
print('Under Budget')
Run Code Online (Sandbox Code Playgroud)
编辑:这仅适用于Python 2.在Python 3中,您可以获得TypeError: unorderable types,这样可以避免这样的错误.