-2

我正在尝试制作一个简单的天气应用程序,并且我正在尝试通过列表理解来获取所有图标。我找不到这样做的方法,也找不到任何解决方案,所以如果有人知道,请告诉我。这是我从 Web API 获得的数据。我有能力在几天内完成一个人,但我找不到列表理解的方法谢谢

我当前的代码:

   data = {
            'icon': response['data'][0]['weather']['icon'],
            'icon2': response['data'][1]['weather']['icon'],
            'icon3': response['data'][2]['weather']['icon'],
            'icon4': response['data'][3]['weather']['icon'],
         }

我想得到这样的东西

 data = {
         icons = #list comprehension
        }

api结果

 {'data': [{'app_max_temp': 12.2, 'weather':  {'icon': 'c01d', 'code': 800, 'description': 'Clear 
 Sky'}'min_temp': 5, 
{ 'app_max_temp': 13.7, 'weather': {'icon':'c01d','code': 800, 'description': 'Clear Sky'}, 
'min_temp': 5,
{'app_max_temp': 12.1, 'weather': {'icon': 'c02d', 'code': 802, 'description': 'Scattered 
clouds'}'min_temp': 8, 
{ 'app_max_temp':  11.8,  'weather': {'icon': 'r01d', 'code': 500, 'description': 
'Light rain'}, 'min_temp': 6,}
4

2 回答 2

1

你可以试试这个:

icons = [row['weather']['icon'] for row in api_result['data']]
于 2021-03-02T13:07:50.667 回答
0

如果您的 api 结果更正为:

api_result = {'data': 
        [{'app_max_temp': 12.2, 
          'weather':  {'icon': 'c01d', 'code': 800, 'description': 'Clear Sky'},
          'min_temp': 5}, 
         { 'app_max_temp': 13.7, 
          'weather': {'icon':'c01d','code': 800, 'description': 'Clear Sky'}, 
          'min_temp': 5},
        {'app_max_temp': 12.1, 
         'weather': {'icon': 'c02d', 'code': 802, 'description': 'Scattered clouds'},
         'min_temp': 8}, 
        { 'app_max_temp':  11.8,  
         'weather': {'icon': 'r01d', 'code': 500, 'description': 'Light rain'}, 
         'min_temp': 6,}
        ]}

然后使用 enumerate 函数来帮助命名您的键,您可以执行以下操作。

data = {f'icon{icon_index}': icon['weather']['icon'] 
        for icon_index, icon in enumerate(api_result['data'], start=1)}

它输出:

{'icon1': 'c01d', 'icon2': 'c01d', 'icon3': 'c02d', 'icon4': 'r01d'}
于 2021-03-02T13:17:28.070 回答