我正在使用boto3進行python AWS Cognito實現。 jwt.decode
在IdToken產生的有效載荷是在一本字典的形式,像這樣:僅將python字典列表的值合併爲單個字典
{
"sub": "a uuid",
"email_verified": True,
"iss": "https://cognito-idp....",
"phone_number_verified": False,
"cognito:username": "19407ea0-a79d-11e6-9ce4-09487ca06884",
"given_name": "Aron Filbert",
"aud": "my client app",
"token_use": "id",
"auth_time": 1480547504,
"nickname": "Aron Filbert",
"phone_number": "+14025555555",
"exp": 1480551104,
"iat": 1480547504,
"email": "[email protected]"
}
所以我設計了一個用戶類,消耗了字典。很好的工作,直到我需要再次擊中Cognito並抓住新的用戶細節以確保沒有任何變化(例如,從另一個設備)。從get_user()
叫我回報的有效載荷最終看起來像一個字典列表:
[
{
"Name": "sub",
"Value": "a uuid"
},
{
"Name": "email_verified",
"Value": "true"
},
{
"Name": "phone_number_verified",
"Value": "false"
},
{
"Name": "phone_number",
"Value": "+114025555555"
},
{
"Name": "given_name",
"Value": "Aron Filbert"
},
{
"Name": "email",
"Value": "[email protected]"
}
]
因爲我可能會打的是get_user()
Cognito終點了很多,我在尋找一種有效的方式抓住每個JUST值字典列表中,並使用它們形成鍵:新字典的值。例如:
{
"sub": "a uuid", # From first list item
"email_verified": True, # From next list item
...
}
作爲Python的新手,我正在努力如何優雅高效地完成此任務。
首先,您應該簡單而低效地做到這一點,然後擔心改進(這就是您學習的方式)。你嘗試過一些簡單/暴力嗎? –
完全同意。我問的原因是因爲我在使用我不熟悉的後端的最後期限。我已經寫了一個快速迭代器來完成我的任務,並考慮使用'any()',但是希望得到更多pythonic解決方案 – afilbert
'k [「Name」]:k [「Value」] for k in list_of_dicts_from_get_user}'? –