<p>我能想到的唯一一件事,他们的意思是使用列表理解而不是for循环</p>
<p>您可能会发现一些关于该主题的有用链接:</p>
<ul>
<li><a href="https://stackoverflow.com/questions/60627702/when-to-use-a-list-comprehension-vs-a-for-loop">When to use a list comprehension vs a for loop</a></li>
<li><a href="https://switowski.com/blog/for-loop-vs-list-comprehension" rel="nofollow noreferrer">https://switowski.com/blog/for-loop-vs-list-comprehension</a></li>
</ul>
<pre class="lang-py prettyprint-override"><code>def aggregate_stock_data(prod_inf, stock_inf, loc_inf):
loc_inf = {loc['locationId']: loc['locationName'] for loc in loc_inf}
stock_inf = {
prod['productId']: list(filter(
lambda x: x['productId'] == prod['productId'],
stock_inf
)) for prod in prod_inf
}
aggregated = [
{
'productName': prod['productName'],
'stock': {
'total': sum(
item['stock']
for item in stock_inf[prod['productId']]
),
'detail': [
{
'stock': item['stock'],
'locationName': loc_inf[item['locationId']]
} for item in stock_inf[prod['productId']]
]
}
} for prod in prod_inf
]
return aggregated
</code></pre>
<p>如果由于某种原因,情况并非如此,则始终可以使用<code>map</code>函数。但我认为这通常会使代码比现在更不可读</p>
<pre class="lang-py prettyprint-override"><code>def aggregate_stock_data(prod_inf, stock_inf, loc_inf):
loc_inf = {loc['locationId']: loc['locationName'] for loc in loc_inf}
stock_inf = {
prod['productId']: list(filter(
lambda x: x['productId'] == prod['productId'],
stock_inf
)) for prod in prod_inf
}
aggregated = list(map(
lambda prod: {
'productName': prod['productName'],
'stock': {
'total': sum(map(
lambda x: x['stock'],
stock_inf[prod['productId']])
),
'detail': list(map(
lambda x: {
'stock': x['stock'],
'locationName': loc_inf[x['locationId']]
}, stock_inf[prod['productId']]
))
}
}, prod_inf
))
return aggregated
</code></pre>