回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有3个单独的python列表,它们可以根据脚本运行的时间存储变量值,例如:</p>
<pre><code>requestId=[123, 456, 789, 987, 654, 321]
requestTitle=['Title1', 'Title1', 'Title2', 'Title3', 'Title3', 'Title3']
requestBodyText=['BodyText1', 'BodyText1', 'BodyText2', 'BodyText3', 'BodyText3', 'BodyText3']
</code></pre>
<p>我需要根据<code>requestTitle</code>和<code>requestBodyText</code>区分哪些请求是重复的,哪些是唯一的(如果请求具有相同的requestTitle和requestBody,那么它是重复的),对于上述内容,它将是:</p>
<pre><code>uniqueList=[123,789,987]
duplicateList=[456, 654, 321]
</code></pre>
<p>一旦我知道了这一点,那么我需要将requestID配对,以便将值作为{{<cd5>}(唯一)和{<cd6>}(重复)变量传递给我的<code>for loop</code>。我的目标是通过API将所有重复的请求与唯一的请求关联起来</p>
<p>配对后的结果应如下所示:</p>
<pre><code>uniqueIds =[123, 987, 987]
duplicateIds=[456, 654, 321]
</code></pre>
<p>987出现两次,因为它有两封重复的电子邮件654和321。因此,它必须运行两次才能关联这两个请求(654和321),请参见以下内容:</p>
<p>emails.py:</p>
<pre><code>HOST = 'https://myUrl.com/path/'
def update_request(request, token, userid):
headers = { 'accept': 'application/json',
'Content-Type': 'application/json',
'my-token': token,
'User-ID': userid}
endpoint = 'request/'
body = {'requestId': x, "addRelatedEmails": [{"id": duplicatedEmailId, "name": "EMAIL"}]}
return requests.put(url = HOST + endpoint, headers = headers, json=body, verify=False)
print(r.text)
return True
for x, y in zip(uniqueIds, duplicateIds):
update_requests(x, token, userid, duplicatedEmailId=y)
</code></pre>
<p>我不确定我在这里描述的上述方法是否可行,但也许有人能够提供帮助或提出更简单的解决方案?提前谢谢</p>
<p>致@Cireo:</p>
<pre><code>requestId=[123, 456, 789, 987, 654, 321]
requestTitle=['Title1', 'Title1', 'Title2', 'Title3', 'Title3', 'Title3']
requestBodyText=['BodyText1', 'BodyText1', 'BodyText2', 'BodyText3', 'BodyText3', 'BodyText3']
from collections import defaultdict
groups = defaultdict(list)
for i, low, up in zip(requestId, requestTitle, requestBodyText):
groups[(low, up)].append(i)
</code></pre>
<p>当我调用<code>groups</code>时,我会得到以下结果(这似乎是我目标的一半):</p>
<pre><code>groups
defaultdict(<class 'list'>, {('Title1', 'BodyText1'): [123, 456], ('Title2', 'BodyText2'): [789], ('Title3', 'BodyText3'): [987, 654, 321]})
</code></pre>
<p>但现在我需要做以下工作:</p>
<pre><code>uniqueIds = [123, 987, 987] #here I list IDs to my requests that are duplicated. What is important I need to store them as many times as they duplicate. So 123 has one duplicate, 987 has two duplicates therefore I listed this twice.
duplicateIds=[456, 654, 321] #here only the duplicates that I need to relate to my uniqueIds.
</code></pre>
<p>因此,一旦我将<code>uniqueIds</code>和<code>duplicateIds</code>一起传递给我的for循环,它应该与以下内容相关:</p>
<p>请求123与请求456</p>
<p>请求987和请求654</p>
<p>请求987和请求321</p>
<p>我忽略了789号请求,因为它没有副本</p>