我想根據 ecxel 檔案中的膳食選擇創建購物清單。我有一個list_flat_ingredients從 csv 匯入的串列,格式如下:
[ingredient_amount, ingredient_unit, ingredient_name]
示例內容:
[
[1.0, "0", "Obst nach Wahl für Frühstücksbowl"],
[1.0, "Stück", "Schalotten"],
[1.0, "Stück", "Sü?kartoffeln"],
[1.0, "0", "Obst nach Wahl für Frühstücksbowl"],
[500.0, "g", "Sp?tzle"],
[100.0, "g", "Tunfisch (Dose)"],
[1.0, "Laib", "Brot"],
[250.0, "g", "Spaghetti"],
[1.0, "0", "Spargel, grün"],
[1.0, "Laib", "Brot"],
[4.0, "Stück", "Burger Buns"],
[1.0, "Stück", "Flammkuchenteig"],
[1.0, "Laib", "Brot"],
[1.0, "g", "Berglinsen"],
[4.0, "Stück", "Wiener"],
[1.0, "0", "Obst nach Wahl für Frühstücksbowl"],
[1.0, "g", "Berglinsen"],
[1.0, "Stück", "Baguette"],
[1.0, "Laib", "Brot"],
[150.0, "g", "Garnelen"],
[1.0, "0", "Hirtenk?se "],
[1.0, "Becher", "Joghurt"],
[1.0, "Stück", "Fenchel"],
[1.0, "Kopf", "Salat"],
[1.0, "Becher", "Joghurt"],
[200.0, "g", "Bergk?se"],
[0.25, "Kopf", "Salat"],
[1.0, "0", "Aufstrich nach Wahl für Frühstück"],
[1.0, "0", "Eier"],
[1.0, "0", "Zitrone"],
[1.0, "0", "Aufstrich nach Wahl für Frühstück"],
[1.0, "0", "Ziegencamembert "],
[1.0, "0", "Hummus"],
[1.0, "0", "Aufstrich nach Wahl für Frühstück"],
[1.0, "0", "Paprika"],
[1.0, "0", "Brezen"],
[1.0, "Becher", "Joghurt"],
[1.0, "0", "Paprika"],
[100.0, "g", "Speck"],
[1.0, "0", "Aufstrich nach Wahl für Frühstück"],
[1.0, "0", "Reis nach Wahl"],
[1.0, "0", "Paprika"],
[1.0, "0", "Chiasamen"],
[1.0, "0", "Lachs"],
[1.0, "Stück", "Gurke"],
[1.0, "0", "Chiasamen"],
[2.0, "Stück", "Zwiebeln"],
[2.0, "Stück", "Tomaten"],
[0.0, "0", "0"],
[1.0, "0", "Parmesan"],
[1.0, "0", "Wei?wein"],
[0.0, "0", "0"],
[1.0, "0", "Tomaten"],
[1.0, "0", "Zucchini"],
[0.0, "0", "0"],
[1.0, "0", "Gurke"],
[...]
]
然后我要做的是對元素進行分組和求和
for i, g in groupby(sorted(list_flat_ingredients), key=lambda x: x[2]):
shopping_list_in_order.append([sum(v[0] for v in g), i])
問題是我ingredient_unit在最終輸出中丟失了元素(示例):
[
[0.0, "0"],
[0.25, "Salat"],
[0.5, "Gurke"],
[1.0, "Artischocken"],
[4.0, "Aufstrich nach Wahl für Frühstück"],
[1.0, "Brezen"],
[1.0, "Burger Sauce"],
[...],
]
我需要在哪里以及如何在代碼中添加它?謝謝!
uj5u.com熱心網友回復:
您需要手動進行求和,因為groupgroupby 生成的變數是可迭代的,因此它們只能使用一次。有關更多詳細資訊,請參閱此答案和此答案。
shopping_list_in_order = []
for _, group in groupby(sorted(list_flat_ingredients), key=lambda x: x[2]):
row = []
for elem in group:
if len(row) == 0:
row = elem
else:
row[0] = elem[0]
shopping_list_in_order.append(row)
from pprint import pprint
pprint(shopping_list_in_order)
輸出
[[0.0, '0', '0'],
[0.25, 'Kopf', 'Salat'],
[4.0, '0', 'Aufstrich nach Wahl für Frühstück'],
[1.0, '0', 'Brezen'],
[2.0, '0', 'Chiasamen'],
[1.0, '0', 'Eier'],
[1.0, '0', 'Gurke'],
[1.0, '0', 'Hirtenk?se '],
[1.0, '0', 'Hummus'],
[1.0, '0', 'Lachs'],
[3.0, '0', 'Obst nach Wahl für Frühstücksbowl'],
[3.0, '0', 'Paprika'],
[1.0, '0', 'Parmesan'],
[1.0, '0', 'Reis nach Wahl'],
[1.0, '0', 'Spargel, grün'],
[1.0, '0', 'Tomaten'],
[1.0, '0', 'Wei?wein'],
[1.0, '0', 'Ziegencamembert '],
[1.0, '0', 'Zitrone'],
[1.0, '0', 'Zucchini'],
[3.0, 'Becher', 'Joghurt'],
[1.0, 'Kopf', 'Salat'],
[4.0, 'Laib', 'Brot'],
[1.0, 'Stück', 'Baguette'],
[1.0, 'Stück', 'Fenchel'],
[1.0, 'Stück', 'Flammkuchenteig'],
[1.0, 'Stück', 'Gurke'],
[1.0, 'Stück', 'Schalotten'],
[1.0, 'Stück', 'Sü?kartoffeln'],
[2.0, 'g', 'Berglinsen'],
[2.0, 'Stück', 'Tomaten'],
[2.0, 'Stück', 'Zwiebeln'],
[4.0, 'Stück', 'Burger Buns'],
[4.0, 'Stück', 'Wiener'],
[100.0, 'g', 'Speck'],
[100.0, 'g', 'Tunfisch (Dose)'],
[150.0, 'g', 'Garnelen'],
[200.0, 'g', 'Bergk?se'],
[250.0, 'g', 'Spaghetti'],
[500.0, 'g', 'Sp?tzle']]
uj5u.com熱心網友回復:
我的解決方案是基于 dict using。
list_flat_ingredients = [
[1.0, "0", "Obst nach Wahl für Frühstücksbowl"],
[1.0, "Stück", "Schalotten"],
[1.0, "Stück", "Sü?kartoffeln"],
[1.0, "0", "Obst nach Wahl für Frühstücksbowl"],
[500.0, "g", "Sp?tzle"],
[100.0, "g", "Tunfisch (Dose)"],
[1.0, "Laib", "Brot"],
[250.0, "g", "Spaghetti"],
[1.0, "0", "Spargel, grün"],
[1.0, "Laib", "Brot"],
[4.0, "Stück", "Burger Buns"],
[1.0, "Stück", "Flammkuchenteig"],
[1.0, "Laib", "Brot"],
[1.0, "g", "Berglinsen"],
[4.0, "Stück", "Wiener"],
[1.0, "0", "Obst nach Wahl für Frühstücksbowl"],
[1.0, "g", "Berglinsen"],
[1.0, "Stück", "Baguette"],
[1.0, "Laib", "Brot"],
[150.0, "g", "Garnelen"],
[1.0, "0", "Hirtenk?se "],
[1.0, "Becher", "Joghurt"],
[1.0, "Stück", "Fenchel"],
[1.0, "Kopf", "Salat"],
[1.0, "Becher", "Joghurt"],
[200.0, "g", "Bergk?se"],
[0.25, "Kopf", "Salat"],
[1.0, "0", "Aufstrich nach Wahl für Frühstück"],
[1.0, "0", "Eier"],
[1.0, "0", "Zitrone"],
[1.0, "0", "Aufstrich nach Wahl für Frühstück"],
[1.0, "0", "Ziegencamembert "],
[1.0, "0", "Hummus"],
[1.0, "0", "Aufstrich nach Wahl für Frühstück"],
[1.0, "0", "Paprika"],
[1.0, "0", "Brezen"],
[1.0, "Becher", "Joghurt"],
[1.0, "0", "Paprika"],
[100.0, "g", "Speck"],
[1.0, "0", "Aufstrich nach Wahl für Frühstück"],
[1.0, "0", "Reis nach Wahl"],
[1.0, "0", "Paprika"],
[1.0, "0", "Chiasamen"],
[1.0, "0", "Lachs"],
[1.0, "Stück", "Gurke"],
[1.0, "0", "Chiasamen"],
[2.0, "Stück", "Zwiebeln"],
[2.0, "Stück", "Tomaten"],
[0.0, "0", "0"],
[1.0, "0", "Parmesan"],
[1.0, "0", "Wei?wein"],
[0.0, "0", "0"],
[1.0, "0", "Tomaten"],
[1.0, "0", "Zucchini"],
[0.0, "0", "0"],
[1.0, "0", "Gurke"],
]
result_dict = {}
result_list = []
for item in list_flat_ingredients:
if item[2] not in result_dict:
result_dict[item[2]] = [item[0], item[1]]
else:
result_dict[item[2]][0] = item[0]
# if you need result as list
for item in result_dict.keys():
result_dict[item].append(item)
result_list.append(result_dict[item])
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/489008.html
上一篇:在Cypress10中,我們如何檢查下拉選單中的元素是按字母順序還是數字順序排序?
下一篇:如何對包含數字的檔案名進行排序
