如何使用基于索引唯一生成的字符串向循环中的字典添加新项?(Python)

2024-05-23 14:34:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有数组x[],它可以是任何长度。对于context,数组中的每个项都是一个Deal ID

我运行一个循环,将每个Deal ID传递到一个SOQL查询中,以捕获每个Deal的信息,并将其存储在一个带有数组索引的唯一变量中(即,对于索引x[0]处的Deal,唯一变量名为string0)。然后创建一个空字典LDdates={}。此过程按预期工作。你知道吗

但是,当我尝试将一个新项添加到字典LDdates中时,键作为来自交易orderedict的值(在第2行中捕获),值作为来自交易orderedict的值,我得到以下错误:“TypeError:字符串索引必须是整数,而不是str”

我的代码:

    for i in range(len(x)):
        globals()['string%s' % i] = sf.deal__c.get('%s' % x[i])
        LDdates = {}
        LDdates['%s' % ('string%s'['Id'] % i)] = '%s' % ('string%s'['due_date__c'] % i) 

我的问题是:为什么我看到这个错误?我需要改变什么才能让它工作?1-3号线按预期运行。第4行显示TypeError。你知道吗


Tags: 字符串信息id字典过程错误context交易
1条回答
网友
1楼 · 发布于 2024-05-23 14:34:22

你眼前的问题是:

LDates['%s' % ('string%s'['Id'] % i)]

我相信您的意思是访问您先前创建的变量。需要您使用:

LDates[(globals()['string%s' % i])['Id']]

但这一切都是不明智的。为什么不创建一个变量,只需传入整数i,就可以访问所有数据?那将是一个list!你知道吗

Deals = [ sf.deal__c.get(id) for id in x ]

然后设置LDatesId映射到due_date__c

LDates = {d['Id']:d['due_date__c'] for d in Deals}

相关问题 更多 >