Python 使用带有for循环的字典比较值
我目前正在处理一项任务,我们正在阅读包含股票的文件,股票上印有日期和股票价值。在作业中,我们应该在所有函数中使用字典作为参数 下面是一个共享输入的小示例 2000-01-2667987 2000-01-27,3.673608 2000-01-283.393913 我们的目标是找到两个日期是买入和卖出股票让你获得最大利润,两个日期是买入和卖出让你损失最大。我已经制作了一个包含日期和共享值对的字典,现在我只需要将它们相互比较。字典的顺序如下:{share value:date} 目前我已经设法解决了这个问题,将所有共享值放在一个列表中,这样我就可以更容易地相互比较,因为它们都被索引了。然后,我使用位置再次查找共享值,然后使用它查找字典中相应键的值 然而,这个解决方案不能正确地使用字典作为参数,所以我相信它不会让我的教授满意Python 使用带有for循环的字典比较值,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我目前正在处理一项任务,我们正在阅读包含股票的文件,股票上印有日期和股票价值。在作业中,我们应该在所有函数中使用字典作为参数 下面是一个共享输入的小示例 2000-01-2667987 2000-01-27,3.673608 2000-01-283.393913 我们的目标是找到两个日期是买入和卖出股票让你获得最大利润,两个日期是买入和卖出让你损失最大。我已经制作了一个包含日期和共享值对的字典,现在我只需要将它们相互比较。字典的顺序如下:{share value:date} 目前我已经设法解决了
def calc_max_profit():
value = 0
profit = 0
max_profit = 0
for x in range(0, len(share_list)):
value = share_list[x]
for y in range(x+1, len(share_list)):
profit = share_list[y] - value
if profit > max_profit:
max_profit = profit
这就是我计算最大利润的基本方法,在if语句中,我只需要保存发生的最后一个“max_proft=proit”的位置,但我不会在这里这样做
那么,有没有办法只用字典来做类似的事情呢?这有点棘手,但我希望这能解决你的问题。请注意,您必须确保买卖日期的时间顺序是合理的。提供的代码构建了一个新的差异字典
(key=diff&vals=sell\u date-buy\u date)
,然后您只需找到最大利润的最大值和最大损失的最小值
从datetime导入datetime作为dt
股份={150:'2000-01-01',10:'2000-07-01',120:'2000-05-01',200:'2000-09-01',50:'2000-08-01'}
diff_values=[i-j表示共享中的i.keys()表示共享中的j.keys()
如果dt.strptime(共享[j],%Y-%m-%d”)
你能提供一个输入的小例子吗?@SuperKogito当然!2000-01-26,3.67987 2000-01-27,3.673608 2000-01-28,3.393913我想,在我的回答中,我使用了足够接近的输入,看看它。这应该有帮助;)谢谢我试过了,它确实有效,解决了我们的任务。然而,我相信使用datetime导入和相应的函数是我们迄今为止所学到的。但我会尝试实现这段代码,看看它是否足够!很高兴这有帮助。您总是可以构建一个简单的函数来进行日期比较,而不是使用datetime
。碰巧我们的共享输入已经在.txt文件中排序,也许我可以绕过使用日期导入?问题是日期比较过滤掉无效的日期组合。在这段代码中,您仍然可以使用相同的逻辑,但是您必须使用'shares.keys()'的索引。我认为这三行应该改为:keys=list(shares.keys());diff_值=[keys[i]-范围内i的keys[j](0,len(keys))范围内j的keys[j](i,len(keys))
并且以类似的方式,您需要更改diff_日期