回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有以下已排序的元组列表:</p>
<pre><code>list1 = [(0.2, 'a'), (0.4, 'b'), (0.5,'d')]
list2 = [(0.1, 'a'), (0.3, 'c'), (0.7, 'x')]
list3 = [(0.5, 'c'), (0.6, 'a'), (0.5, 'b')]
</code></pre>
<p>我想根据常见字母创建一个总体排名列表,如下所示:</p>
<ol>
<li>如果字母在所有三个列表中都是通用的,则添加三个单独的值</li>
<li>如果字母仅在两个列表之间通用,请将两个单独的值和1相加</li>
<li>如果元素仅在一个列表中,则在其值上添加2</li>
</ol>
<p>预期结果:</p>
<pre><code>[(0.9, 'a'), (1.8, 'c'), (1.9, 'b'), (2.5, 'd'), (2.7, 'x')]
</code></pre>
<p>工作原理:</p>
<p>如果该项在所有三个列表中都很常见,我就能够得到预期的结果,但是如果是其他情况,我就无法得到正确的结果</p>
<p>代码片段</p>
<pre><code>list1 = [(0.2, 'a'), (0.4, 'b'), (0.5, 'd')]
list2 = [(0.1, 'a'), (0.3, 'c'), (0.7, 'x')]
list3 = [(0.5, 'c'), (0.6, 'a'), (0.5, 'b')]
priority_result = [] # when element is common in all 3 lists
twos_array = [] #when element is common in only two lists
result = [(s1, l1 + l1) for (l1, s1), (l1, s2) in zip(list1, list2)]
print(result)
for (score, resultID) in list1:
for (score1, resultID1) in list2:
for (score2, resultID2) in list3:
if(resultID == resultID1 or resultID == resultID2):
result = [(score + score1 + score2, resultID)]
priority_result.extend(result)
elif(resultID == resultID1 and resultID != resultID2):
result = [(score + score1 + 1, resultID)]
twos_array.extend(result)
</code></pre>
<p>我如何在这方面工作以产生预期的结果</p>