我正在使用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}'? –