擅长:python、mysql、java
<p>将<code>list2</code>转换为对给定项的位置进行编码的字典:</p>
<pre><code>dic2 = dict((item,i) for i,item in enumerate(list2))
</code></pre>
<p>现在可以使用<code>x in dic2 and y in dic2</code>测试列表中的内容,并使用<code>dic2[x]</code>获取列表中的索引。</p>
<p>编辑:这违背了我的直觉,但这里是完整的代码。第一部分是使用我上面展示的内容,将一个简单的列表转换为索引的查找。接下来是初始化2D列表的标准if-unintive方法。接下来是循环,使用非常方便的<code>enumerate</code>函数为列表中的每个名称分配一个索引。</p>
<pre><code>Names = ['John', 'James', 'Barry', 'Greg', 'Jenny']
Results1 = ['James', 'Barry', 'Jenny', 'Greg', 'John']
Results2 = ['Barry', 'Jenny', 'Greg', 'James', 'John']
Order1 = dict((name,order) for order,name in enumerate(Results1))
Order2 = dict((name,order) for order,name in enumerate(Results2))
score = [[0]*len(Names) for y in range(len(Names))]
for i,name1 in enumerate(Names):
for j,name2 in enumerate(Names):
if name1 in Order1 and name2 in Order1 and Order1[name1] > Order1[name2] and name1 in Order2 and name2 in Order2 and Order2[name1] > Order2[name2]:
score[i][j] = 1
</code></pre>