我一直在使用flask和python开发一个简单的天气Web应用程序。
我的main.py文件中包含的一条路线是天气路线。它具有一个调用weather api的功能,并输出json输出。
我的问题是从json输出中拉出特定数据。输出结果如下:
{'base': 'stations',
'clouds': {'all': 90},
'cod': 200,
'coord': {'lat': 40.73, 'lon': -73.99},
'dt': 1557824237,
'id': 5128581,
'main': {'humidity': 93,
'pressure': 1009,
'temp': 43.93,
'temp_max': 46,
'temp_min': 42.01},
'name': 'New York',
'sys': {'country': 'US',
'id': 4026,
'message': 0.0144,
'sunrise': 1557826807,
'sunset': 1557878678,
'type': 1},
'visibility': 12874,
'weather': [{'description': 'mist', 'icon': '50n', 'id': 701, 'main': 'Mist'},
{'description': 'light intensity drizzle',
'icon': '09n',
'id': 300,
'main': 'Drizzle'}],
'wind': {'deg': 20, 'speed': 8.05}}
我使用pprint使其更具可读性。我想要做的是通过创建python字典来提取“描述”数据。
weather = {
'city': city,
'temperature': r['main']['temp'],
'description': r['weather'][1]['description'],
'icon': r['weather'][1]['icon'],
}
当我打印天气时,我希望它能打印出description: light intensity drizzle
,icon: 09n
,id:300
,但出现关键错误。当我使用“ 0”而不是“ 1”时,没有出现关键错误,但是我试图提取第二个描述数据,而不是第一个。有什么建议吗?
答案 0 :(得分:1)
尝试调用weather
键,然后使用索引进入列表,然后获取所需的项目。
data = {'base': 'stations',
'clouds': {'all': 90},
'cod': 200,
'coord': {'lat': 40.73, 'lon': -73.99},
'dt': 1557824237,
'id': 5128581,
'main': {'humidity': 93,
'pressure': 1009,
'temp': 43.93,
'temp_max': 46,
'temp_min': 42.01},
'name': 'New York',
'sys': {'country': 'US',
'id': 4026,
'message': 0.0144,
'sunrise': 1557826807,
'sunset': 1557878678,
'type': 1},
'visibility': 12874,
'weather': [{'description': 'mist', 'icon': '50n', 'id': 701, 'main': 'Mist'},
{'description': 'light intensity drizzle',
'icon': '09n',
'id': 300,
'main': 'Drizzle'}],
'wind': {'deg': 20, 'speed': 8.05}}
print(data.get('weather')[0].get('description'))
print(data.get('weather')[0].get('icon'))
print(data.get('weather')[0].get('id'))