3

我有一个问题。

我想让我的代码简单易懂。

我正在尝试从 data 获取下一个日期的值x

这是我的代码。有没有办法使用 lambda 或 map 使它更短?

def nextDay(date,x,time=1):
     res, c = None, 0

     while c<time:
          temp = iter(x)
          for key in temp:
               if key == date:
                    res = next(temp, None)
          date = res
          c+=1
     return res

x = {'2020-01-11': 3.4, '2020-01-13': 4.1, '2020-02-02': 4.1 }
print(x[nextDay('2020-01-11', x, time=1)])

输出:

4.1
4

1 回答 1

1

而不是通过日期time时间并且总是只前进一个日期,只需搜索给定的日期,然后阅读下一个time日期。

def nextDay(date, x, time=1):
    it = iter(x)
    date in it
    for _ in range(time):
        date = next(it, None)
    return date

或与itertools.islice

def nextDay(date, x, time=1):
    it = iter(x)
    date in it
    return next(islice(it, time - 1, None), None)
于 2020-10-22T02:20:39.630 回答