查找最小或最大降雨量值的索引
Find indices of min or max rainfall values
我的代码将最小值和最大值显示为月份而不是值时遇到问题。底部的 min 和 max 代码是占位符,但我不确定如何解决这个问题。
def main():
#List of months
rain_month = ['January', 'February', 'March',' April', \
'May', 'June', 'July', 'August', \
'September', 'October', 'November', 'December']
#Rainfall list
rainfall = []
#Creates rainfall list for months
index = 0
while index < 12:
print ("Enter rainfall for ", rain_month [index], ": ",sep='', end = '')
amount = float(input())
rainfall.append(amount)
index += 1
print()
#Total Rainfall
total = 0
for value in rainfall:
total += value
print("Total Rainfall:", sep="", end="")
print(format(total, ',.2f'))
#Average Rainfall
average = total / len(rainfall)
print("Average Rainfall: ", sep="", end="")
print(format(average, ',.2f'))
#Sort
rainfall.sort()
print(min(rainfall))
print(max(rainfall))
main()
因此,要获得 min
或 max
值的相应索引,您可以执行以下操作:
index = rainfall.index(min(rainfall))
并且由于您知道该索引将与您的 rain_month
列表正确对齐,因此您可以使用该索引来查找月份:
print(rain_month[rainfall.index(min(rainfall))])
但是,更好的方法是 link 您的 rain_months
和 rainfall
使用 dict
结构。因为我们想要订购 dict
我们应该使用 OrderedDict
:
import collections
# This is how OrderedDicts are initalized, you give them a list with (key,value) tuples for the order.
rainfall = collections.OrderedDict(
[('January',0),('Feburary',0)]
)
# Do your computation, something like:
for month in rainfall:
rainfall[month] = input("Rainfall: ")
print(min(rainfall, key=rainfall.get))
print(max(rainfall, key=rainfall.get))
此外,如果您正在做 rainfall.sort()
,您可以从 rainfall[0]
获得 min
,从 rainfall[-1]
获得 max
。 min
和 max
不需要排序列表。此外,如果您执行 sort
,您会更改 rainfall
的顺序,而不会更改 rain_month
的顺序,这意味着您不能使用我描述的第一种方法来获得正确的月份。
我的建议是删除 sort
,或者使用第二种方法。
我的代码将最小值和最大值显示为月份而不是值时遇到问题。底部的 min 和 max 代码是占位符,但我不确定如何解决这个问题。
def main():
#List of months
rain_month = ['January', 'February', 'March',' April', \
'May', 'June', 'July', 'August', \
'September', 'October', 'November', 'December']
#Rainfall list
rainfall = []
#Creates rainfall list for months
index = 0
while index < 12:
print ("Enter rainfall for ", rain_month [index], ": ",sep='', end = '')
amount = float(input())
rainfall.append(amount)
index += 1
print()
#Total Rainfall
total = 0
for value in rainfall:
total += value
print("Total Rainfall:", sep="", end="")
print(format(total, ',.2f'))
#Average Rainfall
average = total / len(rainfall)
print("Average Rainfall: ", sep="", end="")
print(format(average, ',.2f'))
#Sort
rainfall.sort()
print(min(rainfall))
print(max(rainfall))
main()
因此,要获得 min
或 max
值的相应索引,您可以执行以下操作:
index = rainfall.index(min(rainfall))
并且由于您知道该索引将与您的 rain_month
列表正确对齐,因此您可以使用该索引来查找月份:
print(rain_month[rainfall.index(min(rainfall))])
但是,更好的方法是 link 您的 rain_months
和 rainfall
使用 dict
结构。因为我们想要订购 dict
我们应该使用 OrderedDict
:
import collections
# This is how OrderedDicts are initalized, you give them a list with (key,value) tuples for the order.
rainfall = collections.OrderedDict(
[('January',0),('Feburary',0)]
)
# Do your computation, something like:
for month in rainfall:
rainfall[month] = input("Rainfall: ")
print(min(rainfall, key=rainfall.get))
print(max(rainfall, key=rainfall.get))
此外,如果您正在做 rainfall.sort()
,您可以从 rainfall[0]
获得 min
,从 rainfall[-1]
获得 max
。 min
和 max
不需要排序列表。此外,如果您执行 sort
,您会更改 rainfall
的顺序,而不会更改 rain_month
的顺序,这意味着您不能使用我描述的第一种方法来获得正确的月份。
我的建议是删除 sort
,或者使用第二种方法。