我使用列表理解创建了一个列表,我想知道如何将列表中的列表更改为字符串。
这是我的代码:
limit = 1000
searchPage = 0
tagId = 493
table = 'ContactGroupAssign'
selectedFields = ['Contact.Id', 'DateCreated', 'Contact.OwnerID', 'Contact.Groups']
queryDataUnknown = {'GroupId': tagId, 'DateCreated': "~>=~" + str(twoyearsago)}
tagsDic = {'Unknown': ',10738',
'Cant Afford': ',10712',
'Doesnt Want To Pay': ',10714',
'No 3rd Party': ',10716',
'No Longer Qualifies': ',10718',
'Scam': ',10720',
'No Contact': ',10734',
'Collections - Non Payment': ',7878',
'Billing Cancellation': ',10748',
'NBDK': ',8744',
'Within 5 Days: Cant Afford CTF': ',10744',
'Within 5 Days: Changed Mind/Persuaded': ',10746'}
allcancelledmembers = []
while True:
queryResults = infusionsoft.DataService('query', table, limit, searchPage, queryDataUnknown, selectedFields)
allcancelledmembers += queryResults
searchPage += 1
if len(queryResults) < 1000:
break
lc_allcancelmembers = [[record.get("Contact.Id"), convert_is_datetime(str(record.get("DateCreated"))), record.get("Contact.OwnerID"), record.get("Contact.Groups"), [k for k, v in tagsDic.items() if v in (record.get("Contact.Groups"))]] for record in allcancelledmembers]
这是 allcancelledmembers 的初始查询结果:
{'Contact.OwnerID': 28950, 'Contact.Groups': '128,138,206,208,312,420,493,790,952,1528,1554,3286,3302,3634,4090,6566,6570,6572,6576,6578,6582,6584,6588,6596,6600,6604,6606,6608,6610,6614,6766,6782,6784,6934,6966,6970,6972,6992,7054,7060,7062,7226,7366,7688,7692,7906,8006,8010,8122,8130,8254,8274,8282,8290,8418,8644,8672,8734,8873,9041,9043,9171,9175,9540,9622,9752,10738', 'DateCreated': <DateTime '20190513T17:28:05' at 0x10dbec5c0>, 'Contact.Id': 621894}
这是 lc_allcancelmembers 返回的记录:
[68505, datetime.datetime(2019, 1, 9, 9, 10, 52), 384114, '130,134,136,138,152,206,208,286,290,312,436,493,495,728,760,772,774,788,952,968,1088,1226,1254,2362,2584,2598,2972,2974,3102,3560,4552,4554,5430,6566,6950,7226,8156,8160,8412,8418,8672,8744,9179,9273,10738', ['Unknown', 'NBDK']]
这是我想要的结果:
[68505, datetime.datetime(2019, 1, 9, 9, 10, 52), 384114, '130,134,136,138,152,206,208,286,290,312,436,493,495,728,760,772,774,788,952,968,1088,1226,1254,2362,2584,2598,2972,2974,3102,3560,4552,4554,5430,6566,6950,7226,8156,8160,8412,8418,8672,8744,9179,9273,10738', 'Unknown','NBDK']
新结果的唯一区别是将每条记录的最后一项从 ['Unknown','NBDK'] 更改为 'Unknown','NBDK'。
有没有办法通过改变我的代码中的这一行来做到这一点:
lc_allcancelmembers = [[record.get("Contact.Id"), convert_is_datetime(str(record.get("DateCreated"))), record.get("Contact.OwnerID"), record.get("Contact.Groups"), [k for k, v in tagsDic.items() if v in (record.get("Contact.Groups"))]] for record in allcancelledmembers]
如果没有,实现这一目标的最佳方法是什么?
谢谢!
由于我不认识您正在使用的模块,因此这有点棘手。仍然有效。
import datetime
def cleanContacts(A):
return A[:-1] + A[-1]
A = [68505, datetime.datetime(2019, 1, 9, 9, 10, 52), 384114, '130,134,136,138,152,206,208,286,290,312,436,493,495,728,760,772,774,788,952,968,1088,1226,1254,2362,2584,2598,2972,2974,3102,3560,4552,4554,5430,6566,6950,7226,8156,8160,8412,8418,8672,8744,9179,9273,10738', ['Unknown', 'NBDK']]
C = [68505, datetime.datetime(2019, 1, 9, 9, 10, 52), 384114, '130,134,136,138,152,206,208,286,290,312,436,493,495,728,760,772,774,788,952,968,1088,1226,1254,2362,2584,2598,2972,2974,3102,3560,4552,4554,5430,6566,6950,7226,8156,8160,8412,8418,8672,8744,9179,9273,10738', 'Unknown','NBDK']
assert cleanContacts(A) == C
此外,如果我正确地猜测要弹出的元素来自最后一个列表理解,那么这个星号将起作用。
lc_allcancelmembers = [[record.get("Contact.Id"), convert_is_datetime(str(record.get("DateCreated"))), record.get("Contact.OwnerID"), record.get("Contact.Groups"), *[k for k, v in tagsDic.items() if v in (record.get("Contact.Groups"))]] for record in allcancelledmembers]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句