python - 比较两个表中的两个值并追加

标签 python list dictionary python-2.x

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

第一个包含Destination , mid , TypeSource , TypeDestinationTime

[{'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'}]

第二个列表包含中间和状态,以了解消息是否已发送,有时会出现错误,并且会在重复后发送,如示例中所示

[{'status': 'OK', 'mid': '6754'}, {'status': 'Erreur', 'mid': '6755'}, {'status': 'OK', 'mid': '6755'}]
<小时/>

有没有办法进行测试看看 mid 是否有效存在于 the first table存在于 second table ,如果是的话append the statusthe first通过从 second 中提取它??

最佳答案

>>> 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'], [])

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

关于python - 比较两个表中的两个值并追加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16209366/

相关文章:

list - 为什么改变事实的顺序会改变谓词的行为?

python - 检查 python 列表中的序列

Python:使用for循环比较列表中的项目

python - 如何将多个数组减为一个?

vb.net - VB字典包含值返回键

python - 如何判断从文件中读取的字符串是否为数字?

python - 如何在大型文件系统中查找重复文件同时避免 MemoryError

python - 在没有 `zero` 值的情况下计算 Pandas 中的最小值?

python - 如果 range() 是 Python 3.3 中的生成器,为什么我不能在范围上调用 next()?

c# - 如何在 C# 中创建包含不同类型的字典