序列的平均值爲sum(sequence)/len(sequence)
,所以您需要遍歷magnitudes
和measures
,計算這些平均值(算術平均值)並將其存儲在字典中。
還有更多pythonic方式可以實現這一點。所有這些例子都產生了{'mag1': 2.0, 'mag2': 3.5, 'mag3': 5.0}
。
使用for i in range()
循環:
def exp(magnitudes, measures):
means = {}
for i in range(len(magnitudes)):
means[magnitudes[i]] = sum(measures[i])/len(measures[i])
return means
print(exp(['mag1', 'mag2', 'mag3'], [[1, 2, 3], [3, 4], [5]]))
但是如果你需要一個列表的兩個指數和值,您可以使用for i, val in enumerate(sequence)
的做法,是更適合在這種情況下:
def exp(magnitudes, measures):
means = {}
for i, mag in enumerate(magnitudes):
means[mag] = sum(measures[i])/len(measures[i])
return means
print(exp(['mag1', 'mag2', 'mag3'], [[1, 2, 3], [3, 4], [5]]))
另一個問題獸皮這裏:i
索引所屬的magnitudes
,但我們也使用它從measures
獲取值,如果您有magnitudes
和,這對您的情況不是什麼大問題長度相同,但如果magnitudes
會更大,您將獲得IndexError
。因此,在我看來,喜歡使用zip
函數是什麼將是這裏的最佳選擇(實際上,因爲python3.6它不需要兩個列表是相同的長度,它將只使用最短的長度作爲長度結果):
def exp(magnitudes, measures):
means = {}
for mag, mes in zip(magnitudes, measures):
means[mag] = sum(mes)/len(mes)
return means
print(exp(['mag1', 'mag2', 'mag3'], [[1, 2, 3], [3, 4], [5]]))
可以隨意使用哪個適合你的要求,這一個你喜歡的,不要忘記添加文檔字符串的例子。
更有可能的是,你不需要例如Python的方式,但是當字典解析進場也可以是更短:
def exp(magnitudes, measures):
return {mag: sum(mes)/len(mes) for mag, mes in zip(magnitudes, measures)}
print(exp(['mag1', 'mag2', 'mag3'], [[1, 2, 3], [3, 4], [5]]))