为Table Lookup Python使用3个条件

时间:2017-06-20 10:02:06

标签: python dictionary

背景故事:我是python的新手,之前只在MATLAB中做过。

我希望根据我的数据从表中获取特定值。

我的数据是

温度= [0.8,0.1,-0.8,-1.4,-1.7,-1.5,-2,-1.7,-1.7,-1.3,-0.7,-0.2,0.3,1.4,1.4,1.5,1.2, 1,0.9,1.3,1.7,1.7,1.6,1.6]

每天的小时= [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23] < / p>

这是星期一的所有数据。

我的星期一表格如下:

Temp             |   Hr0   |   Hr1   |   Hr2 ...

-15 < t <= -10   |   0.01  |  0.02   |   0.06 ...

-10 < t <= -5    |   0.04  |  0.03   |   0.2 ...

温度增加+5到30,以及直到23的一天中的小时数。表中的值是我想根据温度和小时调用的常数。

例如,我希望能够说:

print(monday(1,1))= 0.01

我也会在本周的每一天进行大规模数据分析,因此需要高效。

到目前为止我做了什么:

所以我把所有的表存放在看起来像这样的字典中:

monday_hr0 = [0.01,0.04,...]

首先按列然后按温度值调用它们。

我现在拥有的是一堆看起来像这样的循环:

for i in range (0,365):
   for j in range (0,24):
      if Day[i] = monday
         if hr[i+24*j] = 0
            if temp[i] = -15
               constant.append(monday_hr1[0])
            ...
         if hr[i+24*j] = 1
            if temp[i] = -15
               constant.append(monday_hr2[0])
            ...
         ...
      elif Day[i] = tuesday
         if hr[i+24*j] = 0
            if temp[i] = -15
               constant.append(tuesday_hr1[0])
            ...
         if hr[i+24*j] = 1
            if temp[i] = -15
               constant.append(tuesday_hr2[0])
            ...
         ...
       ...

我基本上在这里说如果是星期一,请使用此表。然后,如果是这个小时,请使用此列。然后,如果是这个温度,请使用此单元格。然而,这非常非常低效。

我确信有更快的方法,但我无法绕过它。非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

好的,在这里忍受我,我在移动。我会尝试写一个解决方案。

我假设以下内容:

  • 您有一个名为day_data的词典,其中包含一周中每一天的数据表。
    • 你有一个名为days的词典,它将0-6映射到一周中的某一天。 0是星期一,6是星期日。
    • 您有一个温度列表,希望用
    • 完成
    • 您有一天的时间想要从day_data中挑选出适当的数据。你想在一年中的每一天都这样做。

我们只需要在365天内完成一次迭代,一天中每小时一次。

heat-load-days={}
for day_index in range(1,365):
  day=Days[day_index%7]
  #day is now the Day of the week.
  data = day_data[day]
  Heat_load =[]
  for hour in range(24):
    #still unsure on how to select which temperature row from the data table.
    Heat_load.append (day_data_selected)
  heat-load-days [day] = Heat_load