【问题标题】:comparison between two values in two tables and Append比较两个表中的两个值并追加
【发布时间】:2023-04-05 03:47:01
【问题描述】:

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

第一个包含Destination、mid、TypeSource、TypeDestination 和Time

[{'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 以了解是否发送消息,有时会出现错误并在重复后发送,如示例中所示

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

有没有办法通过从second 中提取second table 中的the first table 中存在的mid 来测试append the status 到the first 中是否存在?

【问题讨论】:

  • 为什么不用字典?

标签: python list dictionary python-2.x


【解决方案1】:
>>> 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'], [])

编辑:根据要求更新,包括对多种状态的支持

【讨论】:

  • 感谢您的回答,但有一种情况是状态为错误,然后就可以了,我试过了,只有在可以的时候才插入,怎么能同时插入? (我编辑了我的问题“第二个列表”)
  • 我发布了另一个问题以添加另一个测试
  • @KirkERW 我已经更新了这个来做那个测试,现在试试这个代码吧
猜你喜欢
  • 1970-01-01
  • 2017-08-28
  • 2019-11-30
  • 1970-01-01
  • 1970-01-01
  • 2016-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多