Python 比较两个表中的两个值并追加

Python 比较两个表中的两个值并追加,python,list,dictionary,python-2.x,Python,List,Dictionary,Python 2.x,我有两个列表(通常更长,这里只是一个示例): 第一个包含目的地,中间,类型源,类型目的地和时间 [{'Destination': 'me.xx@domain.fr', 'mid': '6754', 'Type S': 'VOICE', 'Origine': '+45854521', 'Type D': 'SMTP.0', 'Time': '08:29:50.293'}, {'Destination': 'fax.server@domain.fr', 'mid': '6755', 'Type S'

我有两个列表(通常更长,这里只是一个示例):

第一个包含
目的地
中间
类型源
类型目的地
时间

[{'Destination': 'me.xx@domain.fr', 'mid': '6754', 'Type S': 'VOICE', 'Origine': '+45854521', 'Type D': 'SMTP.0', 'Time': '08:29:50.293'}, {'Destination': 'fax.server@domain.fr', 'mid': '6755', 'Type S': 'FAXG3', 'Origine': 'p0298220991', 'Type D': 'SMTP.0', 'Time': '08:55:33.731'}]
第二个列表包含mid和状态,以了解消息是否已发送,有时会出现错误并在重复后发送,如示例中所示

[{'status': 'OK', 'mid': '6754'}, {'status': 'Erreur', 'mid': '6755'}, {'status': 'OK', 'mid': '6755'}]

是否有方法进行测试,以查看
第一个表中存在的
mid
是否存在于
第二个表中,如果存在
则通过从
第二个
中提取将状态添加到
第一个

>>> A = [{'Destination': 'me.xx@domain.fr', 'mid': '6754', 'Type S': 'VOICE', 'Origine': '+45854521', 'Type D': 'SMTP.0', 'Time': '08:29:50.293'}, {'Destination': 'fax.server@domain.fr', 'mid': '6755', 'Type S': 'FAXG3', 'Origine': 'p0298220991', 'Type D': 'SMTP.0', 'Time': '08:55:33.731'}]
>>> B = [{'status': 'OK', 'mid': '6754'}, {'status': 'Erreur', 'mid': '6755'}, {'status': 'OK', 'mid': '6756'}]
>>> mid_status = {}
>>> for d in B:
        mid_status.setdefault(d['mid'], []).append(d['status'])


>>> for d in A:
        if d['mid'] in mid_status:
            d['status'] = mid_status[d['mid']]


>>> A
[{'status': ['OK'], 'Destination': 'me.xx@domain.fr', 'mid': '6754', 'Type S': 'VOICE', 'Origine': '+45854521', 'Time': '08:29:50.293', 'Type D': 'SMTP.0'}, {'status': ['Erreur'], 'Destination': 'fax.server@domain.fr', 'mid': '6755', 'Type S': 'FAXG3', 'Origine': 'p0298220991', 'Time': '08:55:33.731', 'Type D': 'SMTP.0'}]
如果没有,则可能需要状态的默认值,在这种情况下,请使用:

for d in A:
    d['status'] = mid_status.get(d['mid'], [])

编辑:根据请求进行更新,以包括对多个状态的支持

为什么不使用字典?感谢您的回答,但有一种情况是状态为错误,然后就可以了。我已经尝试过,只有在确定时才插入。如何才能同时插入这两种状态??(我编辑了我的问题“第二个列表”)我发布了另一个问题以添加另一个问题test@KirkERW我已经更新了这个来做那个测试,现在试试这段代码吧