我有这两个字典,如下所示:
src_dict = [{"id": 111, "name": "sam"}, {"id": 333, "name": "name_changed_to_not_ross"}, {"id": 444, "name": "jack"}]
dest_dict = [{"rec_id":"abc","fields":{"id":111,"name":"sam"}},
{"rec_id":"pqr","fields":{"id":222,"name":"john"}},
{"rec_id":"xyz","fields":{"id":333,"name":"ross"}}]
我需要创建一个插入和更新列表,但格式不同。创建更新列表时,我需要从两个字典列表中获取相应的值。 (使用blhsing方法可以,但无法获得完整的结果)
ids = {d['fields']['id'] for d in dest_dict}
records_update = [d for d in src_dict if d['id'] in ids]
records_insert = [d for d in src_dict if d['id'] not in ids]
这是结果
records_insert(这很好)
[{'id': 444, 'name': 'jack'}]
records_update(这是问题)
[{'id': 111, 'name': 'sam'}, {'id': 333, 'name': 'ross'}]
这是我在records_update中期望的输出:
records_update(预期输出)
[{'rec_id': 'abc', 'fields': {'id': 111, 'name': 'sam'}},
{'rec_id': 'xyz', 'fields': {'id': 333, 'name': 'name_changed_to_not_ross'}}]
谢谢!
答案 0 :(得分:0)
我认为您的订单错了。
ids = {d['id'] for d in src_dict}
records_update = [d for d in dest_dict if d['fields']['id'] in ids]
>>> records_update
[{'rec_id': 'abc', 'fields': {'id': 111, 'name': 'sam'}}, {'rec_id': 'xyz', 'fields': {'id': 333, 'name': 'ross'}}]