簡體   English   中英

如果字典可以更改,如何在字典中獲取價值

[英]How to get value in dict if dict can change

我有一個數據,我想取一些數據。 但是我有一個問題,那個字典可以改變並且有更多的領域。 該字段是middle_name。 如何獲取given_name,familly_name,distributor_id,middle_name,name 如果是

我試圖做到這一點的len字典的,但我已經len快譯通15.此外,我試圖把它get('claims')並把它與龐大,但它采取的所有值,並且不是我想要的

InfoAboutUser={'distributor_id': '',
 'family_name': '',
 'given_name': '',

 'middle_name': '' 
 'name': ''}


getID=[{
 'claims': [{'claimType': 'given_name',
             'claimValue': 'string1',
             'id': 19052,
             'userId': 'string 0'},
            {'claimType': 'family_name',
             'claimValue': 'string2',
             'id': 19053,
             'userId': 'string 0'},
            {'claimType': 'distributor_id',
             'claimValue': 'string3',
             'id': 19054,
             'userId': 'string 0'},
            {'claimType': 'middle_name',
             'claimValue': 'string4',
             'id': 19055,
             'userId': 'string 0'},
            {'claimType': 'name',
             'claimValue': 'string5',
             'id': 19056,
             'userId': 'string 0'},
            {'claimType': 'vendor_id',
             'claimValue': 'string6',
             'id': 19057,
             'userId': 'string 0'}],
 '}]


distributor_id = getID['claims'][2]['claimValue']
        InfoAboutUser['distributor_id'] = distributor_id
        #print(distributor_id)

        given_name = getID['claims'][0]['claimValue']

        InfoAboutUser['given_name'] = given_name
        #print(given_name)

        family_name = getID['claims'][1]['claimValue']
        InfoAboutUser['family_name'] = family_name
        #print(family_name)

        name = getID['claims'][3]['claimValue']
        InfoAboutUser['name'] = name
        #print(name)

我希望輸出

{'distributor_id': 'string3',
 'family_name': 'string2',
 'given_name': 'string1',

 'middle_name': 'string4',
 'name': 'string5'}

要么

{'distributor_id': 'string3',
 'family_name': 'string2',
 'given_name': 'string1',

 'middle_name': '' # If it is not available,
 'name': 'string5'}

實際輸出的位是

{'distributor_id': 'string3',
 'family_name': 'string2',
 'given_name': 'string1',

 'middle_name': '' 
 'name': 'string4'

如果我正確理解了您的問題,那么解決方案之一可能是遍歷所有索賠:

for claim in getID[0].get('claims'):
  if(claim.get('claimType')) == "middle_name":
    print(claim.get('claimValue'))

處理字典的問題是圍繞它包裝了一個數組。 要訪問日期,您必須將getID的第一項與getID[0]一起getID[0] 之后,您可以如圖所示遍歷claims條目。

datas = {}
for claim in getID[0]['claims']:
    datas[claim['claimType']] = claim['claimValue']

print(datas)
#{'given_name': 'string1', 'family_name': 'string2', 'distributor_id': 'string3', 'middle_name': 'string4', 'name': 'string5', 'vendor_id': 'string6'}

如果要提取顯式,則可以將所需的鍵定義到列表中,然后將這些條目寫入數據字典中。

datas = {}
wanted_keys = ["given_name","familly_name","distributor_id","middle_name","name"]
for claim in getID[0]['claims']:
    if claim['claimType'] in wanted_keys:
        datas[claim['claimType']] = claim['claimValue']
print(datas)
#{'given_name': 'string1', 'distributor_id': 'string3', 'middle_name': 'string4', 'name': 'string5'}

暫無
暫無

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

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