键值映射

时间:2019-05-23 15:17:18

标签: python python-3.x

我有一本字典,如下所示:

{'items': [{'id': 1151, 'name': 'Sun'},
           {'id': 1152, 'name': 'Rain'},
           {'id': 1168, 'name': 'Clouds'},
           {'id': 1169, 'name': 'Clear'},
           {'id': 1170, 'name': 'Mist'},
           {'id': 1171, 'name': 'Fog'},
           {'id': 1231, 'name': 'Drizzle'}]}

根据有关“雾”或“毛毛雨”等天气的信息,我应该组成一个集合:

info = {a: 0,
        'weather_id': 1170,
        'some parameter': 0,
        'vbla': None,
        'ff': some value}

我应该在哪里绘制天气状况图。目前,我只是为每种情况编写了IF条件,这当然是非常愚蠢的:

if weatherConditions=='Clouds':
   info = {a: 0,
            'weather_id': 1168,
            'some parameter': 0,
            'vbla': None,
            'ff': some value}

您能帮我解决我的问题吗?

3 个答案:

答案 0 :(得分:2)

更改您的dict,使键为name,而id为值,这会容易得多(假设天气name永远不会重复):

def get_weather_info(new_dic, weather):
    if weather in new_dic:
        return {
          'a': 0,
          'weather_id': new_dic[weather],
          'some parameter': 0,
          'vbla': None,
          'ff': None
        }
d = {'items': [{'id': 1151, 'name': 'Sun'},
           {'id': 1152, 'name': 'Rain'},
           {'id': 1168, 'name': 'Clouds'},
           {'id': 1169, 'name': 'Clear'},
           {'id': 1170, 'name': 'Mist'},
           {'id': 1171, 'name': 'Fog'},
           {'id': 1231, 'name': 'Drizzle'}]}
new_dic = {dic['name']: dic['id'] for dic in d['items']}
info = get_weather_info(new_dic, 'Rain')
print(info)

答案 1 :(得分:1)

您可以将“ Sun”,“ Rain”,“ Clouds”等用作键值并具有嵌套的字典。可能会变得凌乱,但它会做您需要的事情

答案 2 :(得分:1)

我假设您面临的挑战是提取与“ weatherConditions”变量值相对应的正确ID。通过循环浏览已概述的字典结构并拉出与其对应的ID(您必须将其映射到要包含在集合中的正确的额外变量集合中),可以通过以下方法来做到这一点:

my_dict = {'items': [{'id': 1151, 'name': 'Sun'},
       {'id': 1152, 'name': 'Rain'},
       {'id': 1168, 'name': 'Clouds'},
       {'id': 1169, 'name': 'Clear'},
       {'id': 1170, 'name': 'Mist'},
       {'id': 1171, 'name': 'Fog'},
       {'id': 1231, 'name': 'Drizzle'}]}



weatherConditions='Clouds'

for x in range(len(my_dict['items'])):
    if weatherConditions == my_dict['items'][x]['name']:
        print(my_dict['items'][x]['id'])