我通过 api 得到这个 JSON:
[{
"comments": 18,
"idMembers": [
"61f11c9f67ffdd60eca0e258",
"621db63b462c867ee790e4f7",
"6193c309a86ee2327a054b0d"
],
"labels": [
"метка 1",
"метка 2"
],
"name": "task 1",
"start": "2022-07-28T01:00:00.000Z"
},
{
"comments": 0,
"idMembers": [
"6193c309a86ee2327a054b0d"
],
"labels": [
"метка 2",
"метка 3"
],
"name": "task 2",
"start": "2022-08-05T01:00:00.000Z"
}]
有这样一个字典,其中包含每个 idMembers 的数据:
userArray = {'621db63b462c867ee790e4f7': 'Иван',
'61f11c9f67ffdd60eca0e258': 'Владимир',
'59a7dbc4557c9b17edbc02fa': 'Руслан',
'6193c309a86ee2327a054b0d': 'Максим',
'61fcc437b431385175d8fbee': 'Александра'}
您需要在 json 中查找 idMembers 和 userArray 键的匹配项,并将键 (621db63b462c867ee790e4f7) 替换为值 (Ivan)。
那些。您需要将 json 转换为字典,通过 idMembers 键获取列表,绕过它,在每次迭代时检查 userArray 中某个元素的出现,从找到的元素生成一个新列表,将其写回字典。
json 我收到后立即转换为字典:
jsonData = jmespath.search(query, json.loads(response.text)) //jmespath запрос к json для фильтра данных
然后我不知道怎么做,理论上我需要一个循环,比如:
for entry in jsonData:
if entry['idMembers'] is userArray:
...
请帮帮我。
列表缩减和字典方法在这里工作得很好
get,因为您需要遍历id列表中的所有内容并将字典中的内容替换为字典中的值:结果: