在下面的字典中,我將如何列印最高總分?
scores = {
'Monday': [21, 23, 24, 19],
'Tuesday': [16, 15, 12, 19],
'Wednesday': [23, 22, 23],
'Thursday': [18, 20, 26, 24],
'Friday': [17, 22],
'Saturday': [22, 24],
'Sunday': [21, 21, 28, 25]
}
我對 python 很陌生,我什至不知道從哪里開始。
uj5u.com熱心網友回復:
您可以使用max內置的傳遞字典項和一個鍵函式來計算串列中值的總和:
>>> max(scores.items(), key=lambda x:sum(x[1]))
('Sunday', [21, 21, 28, 25])
或者,如果您需要最大分數而不是分數值串列:
>>> max(map(lambda x:(x[0], sum(x[1])), scores.items()), key=lambda x:x[1])
('Sunday', 95)
uj5u.com熱心網友回復:
這應該為您解決問題。
print(max([max(scores[day]) for day in scores]))
這樣做的目的是獲取每天所有分數的最大值,然后從所有最大值中獲取總體最大值。
要回答有關在字典鍵值對中訪問串列中的專案的問題,您首先需要先訪問一個這樣的對:
d = {'a': [1,2,3], 'b': [4,5,6]}
b = d['b']
然后假設您要訪問串列中的第三項:
# for 3rd item you'd do 3-1
print(b[2])
# 6 is printed
uj5u.com熱心網友回復:
這是另一種方法。我要做的是轉換原始資料結構以包括分數和這些分數的總和。您可以包括將來可能會發現有價值的其他統計資訊。然后我會對該結果應用第二個操作以獲得您正在尋找的最終結果。您無需重復作業即可獲得多個結果。
我不清楚您是否想要最高的單項分數,或者您是否想要某一天所有分數的最高總分。我在上面解釋的方法將使您輕松回答這兩個問題。
因此,以下是如何生成具有有關資料的各種統計資訊的新結構:
from pprint import pprint
scores = {
'Monday': [21, 23, 24, 19],
'Tuesday': [16, 15, 12, 19],
'Wednesday': [23, 22, 23],
'Thursday': [18, 20, 26, 24],
'Friday': [17, 22],
'Saturday': [22, 24],
'Sunday': [21, 21, 28, 25]
}
scores = {k: {'scores': v, 'total': sum(v), 'max': max(v), 'min': min(v)} for k, v in scores.items()}
pprint(scores)
結果:
{'Friday': {'max': 22, 'min': 17, 'scores': [17, 22], 'total': 39},
'Monday': {'max': 24, 'min': 19, 'scores': [21, 23, 24, 19], 'total': 87},
'Saturday': {'max': 24, 'min': 22, 'scores': [22, 24], 'total': 46},
'Sunday': {'max': 28, 'min': 21, 'scores': [21, 21, 28, 25], 'total': 95},
'Thursday': {'max': 26, 'min': 18, 'scores': [18, 20, 26, 24], 'total': 88},
'Tuesday': {'max': 19, 'min': 12, 'scores': [16, 15, 12, 19], 'total': 62},
'Wednesday': {'max': 23, 'min': 22, 'scores': [23, 22, 23], 'total': 68}}
然后,如果您想知道哪一天的總分最高,以及總分是多少,您可以這樣做:
print(max(scores.items(), key=lambda x: x[1]['total']))
這給了你:
('Sunday', {'scores': [21, 21, 28, 25], 'total': 95, 'max': 28, 'min': 21})
如果您想知道最大單次得分發生在哪一天,您可以這樣做:
print(max(scores.items(), key=lambda x: x[1]['max']))
這恰好給您相同的結果,因為周日的單項得分最高,當天所有得分的總和最高。
如果你有一個非常大的資料集,你可以避免遍歷資料 3 次來計算的打擊max,min并sum通過撰寫一個小函式來遍歷資料并一次生成相同的統計資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/526849.html
標籤:Python列表字典
上一篇:練習排序字典
下一篇:python將串列串列轉換為字典
