从生成器高效提取数据

时间:2019-01-06 02:56:42

标签: python dictionary generator

我只是在学习python,我想知道是否有更好的方法从res变量中提取最新温度。

for (index, animal) in zoo.enumerated() {
    print("\(index)", terminator: "") //The terminator allows it to NOT create a new line on the next print statement.
    animal.printAnimalDetails()
}

3 个答案:

答案 0 :(得分:2)

您的代码相当有效,但可以将其缩减为:

代码:

from noaa_sdk import noaa
import datetime as dt

date = dt.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
res = noaa.NOAA().get_observations('25311', 'US', start=date)
print('{:.1f} F'.format( next(res)['temperature']['value'] * 9 / 5 + 32))

结果:

44.1 F

答案 1 :(得分:1)

如果您的意思是计算效率,则没有太大的改进空间。

如果您的意思是缩短代码行,那么temp= (next(res))部分与提取代码中的数据有关,似乎已经很短了。

答案 2 :(得分:0)

noaa_sdk包的示例文档大量使用了循环。我建议,如果您只是在学习Python,则尝试使用面向循环的样式。

from datetime import datetime

from noaa_sdk import noaa

def to_freedom_degrees(temp_c):
    return 32.0 + 9.0 / 5.0 * temp_c

date = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
observations = noaa.NOAA().get_observations('25311', 'US', start=date, end=None, num_of_stations=1)

for observation in observations:
    temp_c = observation['temperature']
    temp_f = to_freedom_degrees(temp_c)
    print(temperature, ' F')
    # I only want one temperature
    break
else:
    print('No temperature found!')