[英]Compare data list in python
我尝试比较 Python 中的两个列表。第一个列表来自 Salesforce Call,另一个来自 Sharepoint 使用 Shareplum 的列表。
来自 Salesforce 的列表格式如下:
[OrderedDict([('attributes', OrderedDict([('type', 'FlashS__c'), ('url', '/services/data/v42.0/sobjects/FlashSale__c/123456')])), ('Id', '123456'), ('FlashSaleOpeningDate__c', '2021-10-13T00:00:00.000+0000'), ('Endofflashsaledate__c', '2021-10-19T21:59:00.000+0000'), ('ID__c', '350601FR'), ('Is_Extended__c', False), ('End_date_after_extension__c', None), ('FS_Extension__c', None), ('Stage__c', '5-Planned'), ('BUGlobal__c', 'fr_FR')])]
[OrderedDict([('attributes', OrderedDict([('type', 'FlashS__c'), ('url', '/services/data/v42.0/sobjects/FlashSale__c/896587')])), ('Id', '896587'), ('FlashSaleOpeningDate__c', '2021-10-13T00:00:00.000+0000'), ('Endofflashsaledate__c', '2021-10-19T21:59:00.000+0000'), ('ID__c', '350601FR'), ('Is_Extended__c', False), ('End_date_after_extension__c', None), ('FS_Extension__c', None), ('Stage__c', '5-Planned'), ('BUGlobal__c', 'fr_FR')])]
来自 Sharepoint 的列表格式如下:
[{
'Title': 'en_En - Mon titre - Test - 2022-06-06',
'Opening Date': datetime.datetime(2022, 6, 6, 2, 0),
'Close Date': datetime.datetime(2022, 6, 12, 23, 59),
'Country': 'Switzerland',
'City': 'Davos',
'BU': 'en_En',
'ProductType': 'Maj',
'MHMT': 'No',
'SalesforceID': '123456',
'FS Stage': '5-Planned'
}
{
'Title': 'en_En - Mon titre 2 - Test 2 - 2022-06-06',
'Opening Date': datetime.datetime(2022, 6, 6, 2, 0),
'Close Date': datetime.datetime(2022, 6, 12, 23, 59),
'Country': 'Switzerland',
'City': 'Davos',
'BU': 'en_En',
'ProductType': 'Maj',
'MHMT': 'No',
'SalesforceID': '456789',
'FS Stage': '5-Planned'
}
]
我想循环并查找其他列表中的行是否匹配。 我想在这样的新列表中注册结果:
SalesForce Sharepoint
123456 123456
896587 KO
KO 456789
我尝试这样做:
list_result = []
for i in range(len(sf_api_data['records'])):
for j in range(len(shp_api_data)):
if sf_api_data['records'][i]['Id'] == shp_api_data[j]['SalesforceID']:
if sf_api_data['records'][i]['Id'] not in list_result:
list_result[i]['Salesforce'] = sf_api_data['records'][i]['Id']
list_result[i]['Sharepoint'] = shp_api_data[j]['SalesforceID']
print(list_result)
sf_api_data['records']
是 Salesforce 列表
shp_api_data
是 Sharepoint 列表
你有想法吗?
谢谢
构建两个 ID 的集合:
sf_ids = {r['SalesforceID'] for r in sf_api_data['records']}
shp_ids = {r['Id'] for r in shp_api_data}
然后你可以得到它们的交集和不同点:
print("SalesForce Sharepoint")
for i in sf_ids & shp_ids:
print(f"{i:<10} {i}")
for i in sf_ids - shp_ids:
print(f"{i:<10} KO")
for i in shp_ids - sf_ids:
print(f"KO {i}")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.