簡體   English   中英

鍵值映射

[英]Mapping of key-values

我有一本字典,內容如下:

{'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}

您能幫我解決我的問題嗎?

您可以將“ Sun”,“ Rain”,“ Clouds”等用作鍵值並具有嵌套字典。 可能會變得凌亂,但它會做您需要的

更改您的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)

我假設您面臨的挑戰是提取與“ 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'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM