<p>以下是评论中的答案和解释:</p>
<pre><code>prod = [
['123456789', '2L 2% Vitali Milk'],
['123456798', '1L 2% Vitali Milk'],
['456392452', '70% Cocoa Zimbra Chocolate'],
['456123490', 'Zimbra Milk Chocolate'],
['634590221', 'Onion flavour chips'],
['634599011', 'Vinegar flavour chips'],
['780123678', 'Sliced white bread'],
['780432109', 'Sliced whole wheat bread'],
['809001234', '2L Orange Juice'],
['808765432', '2L Apple Juice']
]
avail = [
['123456789', '7807890123', '2.58'],
['123456789', '7804922860', '2.99'],
['456392452', '7807890123', '2.11'],
['456123490', '7804922860', '3.10'],
['808765432', '7809876543', '4.10']
]
# you can keep track of the best record for a given product code using a dict
result = {}
# since prod is really just a mapping from product code to product name, it
# also works well as a dict
prod_d = {p[0]: p[1] for p in prod}
# now, it's easy to construct the result from avail:
# (the cast to tuple allows for spreading into nicely named variables)
for pc, phone, price in (tuple(a) for a in avail):
# using -1 as price will still be the last element
if pc not in result or price < result[pc][-1]:
result[pc] = [prod_d[pc], phone, price]
print(result)
# if you prefer a list after all:
result = [[pc, prod, phone, price] for pc, (prod, phone, price) in result.items()]
print(result)
</code></pre>
<p>结果:</p>
<pre><code>{'123456789': ['2L 2% Vitali Milk', '7807890123', '2.58'], '456392452': ['70% Cocoa Zimbra Chocolate', '7807890123', '2.11'], '456123490': ['Zimbra Milk Chocolate', '7804922860', '3.10'], '808765432': ['2L Apple Juice', '7809876543', '4.10']}
[['123456789', '2L 2% Vitali Milk', '7807890123', '2.58'], ['456392452', '70% Cocoa Zimbra Chocolate', '7807890123', '2.11'], ['456123490', 'Zimbra Milk Chocolate', '7804922860', '3.10'], ['808765432', '2L Apple Juice', '7809876543', '4.10']]
</code></pre>
<p>只是解决方案:</p>
<pre><code>result = {}
prod_d = {p[0]: p[1] for p in prod}
for pc, phone, price in (tuple(a) for a in avail):
if pc not in result or price < result[pc][-1]:
result[pc] = [prod_d[pc], phone, price]
result_list = [[pc, prod, phone, price] for pc, (prod, phone, price) in result.items()]
</code></pre>