1

私は2つのリストを持っています(通常、それらははるかに長くなります。これは単なる例です):

最初はDestinationmidTypeSourceTypeDestinationおよび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'}]

2 番目のリストには、メッセージが送信されたかどうかを知るための mid と status が含まれています。

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

mid既存の inが にthe first table存在するsecond tableかどうかappend the statusを確認するテストを行う方法はありますthe firstsecond??

4

1 に答える 1

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

編集:複数のステータスのサポートを含めるために、要求に従って更新されました

于 2013-04-25T08:06:00.917 に答える