你可以用更少的代碼做到這一點,取決於你的Python編程和水平你想要的可讀性級別。我已經把它分解成逐行的步驟。
order_list = [
['ITEM 1', '155.80EUR ', 'Needed'], ['ITEM 1', '164.00EUR '], ['ITEM 1', '165.30EUR '],
['ITEM 1', '170.05EUR '], ['ITEM 1', '174.00EUR '], ['ITEM 1', '179.00EUR '],
['ITEM 1', '179.00EUR '],
['ITEM 2', '122.55EUR '], ['ITEM 2', '129.00EUR ', 'Needed'], ['ITEM 2', '132.05EUR '],
['ITEM 2', '136.80EUR '], ['ITEM 2', '139.00EUR '], ['ITEM 2', '144.00EUR '],
['ITEM 2', '144.00EUR '], ['ITEM 2', '144.00EUR '], ['ITEM 2', '154.00EUR '],
['ITEM 2', '154.00EUR '],
['ITEM 3', '246.05EUR ', 'Needed'], ['ITEM 3', '249.00EUR '], ['ITEM 3', '250.80EUR '],
['ITEM 3', '259.00EUR '], ['ITEM 3', '264.00EUR '], ['ITEM 3', '264.00EUR '],
['ITEM 3', '264.00EUR '], ['ITEM 3', '274.00EUR ']
]
# Collect items only in a list
item_list = [line[0] for line in order_list]
# Collect only distinct items
product_list = set(item_list)
print "item list:", item_list
print "product list:", product_list
best_order = []
# Find the first (cheapest) occurence of each item;
# See whether it's needed
for product in product_list:
pos = item_list.index(product)
line_item = order_list[pos]
if 'Needed' in line_item:
best_order.append(line_item)
print best_order
輸出:
item list: ['ITEM 1', 'ITEM 1', 'ITEM 1', 'ITEM 1', 'ITEM 1', 'ITEM 1', 'ITEM 1', 'ITEM 2', 'ITEM 2', 'ITEM 2', 'ITEM 2', 'ITEM 2', 'ITEM 2', 'ITEM 2', 'ITEM 2', 'ITEM 2', 'ITEM 2', 'ITEM 3', 'ITEM 3', 'ITEM 3', 'ITEM 3', 'ITEM 3', 'ITEM 3', 'ITEM 3', 'ITEM 3']
product list: set(['ITEM 3', 'ITEM 2', 'ITEM 1'])
[['ITEM 3', '246.05EUR ', 'Needed'], ['ITEM 1', '155.80EUR ', 'Needed']]
[ 「有人可以幫助我?」是不是一個有效的SO問題](https://meta.stackoverflow.com/questions/284236/why-is-can-someone-help-me-not-an-actual-question)。這通常表明,你需要的是半個小時的時間與當地的導師,或通過一個教程,而不是堆棧溢出。 – Prune
特別是,展示您在攻擊問題時所做的努力和編碼進度。你如何用鉛筆和紙做這件事?你怎麼把它翻譯成代碼?您沒有費力從中間字符串中提取價格,按照產品排列列表,或者解決問題相關的*任何*。 – Prune
爲什麼我應該從中間字符串中提取價格?該列表已使用list.sort(key = operator.itemgetter(0,1))根據產品和價格進行了排列,這與實際問題無關。問題是如果滿足兩個條件(元素包含'needed'且元素是組中第一個地方(在這種情況下,組將是Item1; Item2; Item3)),則從列表中找出元素。所以我在這裏提出問題之前,既沒有看到「能否幫助我」這樣的問題,也沒有找到解決方案的努力。 – Kimsbrand