Python新手 - 是否有一种直接的方法来迭代元组列表并使用性能阈值(即每日销售额超过/低于预算销售额)进行计算?请参阅以下信息:
daily_sales = [('A',150000),('B',73000),('C',110000),('D',231000),('E',66000)]
budgeted_sales = {'A':140000,'B':103000,'C':80000,'D':20000,'E':90000}
performance_threshold = .20
答案 0 :(得分:1)
为了简单起见,您可以循环执行此操作。第一行循环遍历daily_sales
中的每个元组对。对于第一对,item[1]
是150000.然后它从字典中获得item[0]
(即A)。请注意,如果字典中没有匹配的项目,则会失败。
for item in daily_sales:
performance = item[1] / float(budgeted_sales.get(item[0])) - 1
if performance > 0:
print "Over {0:.2%}".format(performance)
else:
print "Under {0:.2%}".format(performance)
Over 7.14%
Under -29.13%
Over 37.50%
Over 1055.00%
Under -26.67%
答案 1 :(得分:0)
我猜你要找的是这样的:
for i in daily_sales:
if i[1] > budgeted_sales['A']:
//Do something
这里重要的一点是元组是不可变的,所以你可以通过引用一个位置(例如i [0])来访问它。可以通过引用其密钥来访问Dict条目(例如myDict ['myKey']
我希望这有帮助!
答案 2 :(得分:0)
由于您是Python的新手,因此在没有过于复杂的语法的情况下,这是一种简单的方法:
strFilename = Replace(strFilename, Chr(9), " ")
上面的检查是可选的,但是它确保您不会使用不存在的密钥直接访问字典,然后尝试添加不存在的值与现有的值。
答案 3 :(得分:0)
因为没有人提到它,你可以在for循环中解压缩以使代码更容易理解(包括performance_threshold
):
for day, sales in daily_sales:
performance = float(sales) / budgeted_sales[day]
if performance > 1+performance_threshold:
print "Over {0:.2%}".format(performance)
elif performance < 1-performance_threshold:
print "Under {0:.2%}".format(performance)
else:
print "Target {0:.2%}".format(performance)
输出:
Target 107.14%
Under 70.87%
Over 137.50%
Over 1155.00%
Under 73.33%