<p>我想这能满足你的需要。每个单词的列表长度相同,并且将包含<code>None</code>或每个相应列表的索引列表:</p>
<pre><code>import collections
def create_myDict(*lists):
""" Map words to their index positions in each of the lists. """
# initialize results
unique_words = {word for words in lists for word in words}
results = {word: [[] for _ in xrange(len(lists))] for word in unique_words}
for list_num, words in enumerate(lists):
indices = collections.defaultdict(list)
for index, word in enumerate(words):
indices[word].append(index)
for word in indices:
results[word][list_num] = indices[word]
# return results with empty lists converted to None
return {word: [None if not index else index for index in indicies]
for word, indicies in results.iteritems()}
list1 = ['why', 'did', 'the', 'dalmation', 'need', 'glasses', 'he', 'was',
'seeing', 'spots']
list2 = ['what', 'did', 'the', 'book', 'say', 'to', 'the', 'page', 'don\'t',
'turn', 'away', 'from', 'me']
print 'create_myDict(list1, list2) = {'
for item in sorted(create_myDict(list1, list2).items()):
print ' {!r}: {},'.format(*item)
print '}'
</code></pre>
<p>示例列表的输出:</p>
^{pr2}$
<p><strong>更新</strong></p>
<p>如果您的输入是列表列表,如您在评论中所述,只需执行以下操作:</p>
<pre><code>myinput = [['what', 'did'], ['why', 'did', 'the', 'strawberry']]
print 'create_myDict(*myinput) = {'
for item in sorted(create_myDict(*myinput).items()):
print ' {!r}: {},'.format(*item)
print '}'
</code></pre>
<p>输出:</p>
<pre class="lang-none prettyprint-override"><code>create_myDict(*myinput) = {
'did': [[1], [1]],
'strawberry': [None, [3]],
'the': [None, [2]],
'what': [[0], None],
'why': [None, [0]],
}
</code></pre>