我希望能夠根據串列中串列中的第一項是否匹配,將串列中的某些數字添加到一起。例如:
myList = [['Mar', 5], ['Feb', 29], ['Mar', 7], ['Jan', 20], ['Feb', 3], ['Feb', 4], ['Mar', 12], ['Jan', 2], ['Jan', 16]]
如果每個串列中的第一項(“Mar”、“Feb”或“Jan”)匹配,我想將該串列的數字相加,最終得到一個如下所示的串列串列:
newList = [['Mar', 24], ['Feb', 36], ['Jan', 38]]
但是,我對編程還很陌生,我不確定如何處理這個問題。任何有關如何實作這一目標的建議將不勝感激。
uj5u.com熱心網友回復:
如果您將串列作為給定輸入,則可以使用字典將這些值相加。如果您可以自己選擇輸入的資料結構,請立即考慮使用字典。
myList = [['Mar', 5], ['Feb', 29], ['Mar', 7], ['Jan', 20], ['Feb', 3], ['Feb', 4], ['Mar', 12], ['Jan', 2], ['Jan', 16]]
months = dict()
for [month, day] in myList:
if month in months:
months[month] = day
else:
months[month] = day
# output dictionary (you may wanna use this for further computation)
print(months)
# if you need it sorted (and as a list)
sorted_month = sorted(months.items(), key=lambda item: item[1])
print(sorted_month)
預期輸出:
{'Mar': 24, 'Feb': 36, 'Jan': 38}
[('Mar', 24), ('Feb', 36), ('Jan', 38)]
uj5u.com熱心網友回復:
看起來您正在使用python,但無論如何我都會用偽代碼回答。將來閱讀 stackoverflow 幫助部分以了解如何提出一個好問題,并適當地標記
在編碼時,我們正在分解問題。
myList = [['Mar', 5], ['Feb', 29], ['Mar', 7], ['Jan', 20], ['Feb', 3], ['Feb', 4], ['Mar', 12], ['Jan', 2], ['Jan', 16]]
如果你親自給我這個任務,我可能會創建一個小統計,每個月和他們當前的運行總數。(這是@Mushroomator 提供的代碼)
另一種選擇是搜索我正在尋找的月份并瀏覽串列,像我一樣找到那個特定月份的總數。例如,通過轉到第一個條目來查找 jan 總計,如果不是 jan,則丟棄,如果 jan,則添加到總計,然后進入下個月
我實際上還有更多,想想你會如何分解這個?
編碼第二個:
monthsICareAbout = [‘jan’,’etc?’]
newList=[]
for month in monthsICareAbout
running_total=0 (because its fresh per month)
for data in myList
if data[0] == month
running_total = data[1] (adding the number part)
newList.add([month, running_total])
uj5u.com熱心網友回復:
這應該有效:
myList = [['Mar', 5], ['Feb', 29], ['Mar', 7], ['Jan', 20], ['Feb', 3], ['Feb', 4], ['Mar', 12], ['Jan', 2], ['Jan', 16]]
totals = {}
for i in myList:
totals.setdefault(i[0], 0)
totals[i[0]] = i[1]
newList = [[*i] for i in totals.items()]
print(newList)
輸出:
[['Mar', 24], ['Feb', 36], ['Jan', 38]]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/451585.html
