擅长:python、mysql、java
<p>您可以使用生成器尝试列表理解:</p>
<pre><code>[{'prefix': x, 'shape': next(y for y in B if y.startswith(x))} for x in A]
</code></pre>
<p>输出:</p>
<pre><code>[{'prefix': 'pent', 'shape': 'pentangle'},
{'prefix': 'tri', 'shape': 'triangle'},
{'prefix': 'rec', 'shape': 'rectangle'},
{'prefix': 'oct', 'shape': 'octagon'},
{'prefix': 'hex', 'shape': 'hexagon'}]
</code></pre>
<p>或者您可以首先将<code>B</code>排序为与<code>A</code>相同的顺序:</p>
<pre><code>B = sorted(B, key=lambda x: next(i for i, v in enumerate(A) if x.startswith(v)))
</code></pre>
<p>然后<code>zip</code>:</p>
<pre><code>[{'prefix': x, 'shape': y} for x, y in zip(A, B)]
</code></pre>