【问题标题】:Find indices of min or max rainfall values查找最小或最大降雨值的索引
【发布时间】:2017-04-20 03:02:15
【问题描述】:

我的代码将最小值和最大值显示为月份而不是值时遇到问题。 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()

【问题讨论】:

  • 您的具体问题是什么?这有点模糊。

标签: python max min indices


【解决方案1】:

因此,要获取 minmax 值的相应索引,您可以执行以下操作:

index = rainfall.index(min(rainfall))

并且由于您知道该索引将正确地与您的 rain_month 列表对齐,您可以使用该索引来查找月份:

print(rain_month[rainfall.index(min(rainfall))])

但是,更好的方法是使用dict 结构链接您的rain_monthsrainfall。由于我们希望订购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]maxrainfall[-1] 获得minminmax 不需要排序列表。此外,如果您执行sort,则更改rainfall 的顺序,而不更改rain_month 的顺序,这意味着您不能使用我描述的第一种方法来获取正确的月份。

我的建议是要么删除那个sort,要么使用第二种方法。

【讨论】:

  • 注意:这有一个警告,以防出现并列的最大值或最小值。它将返回列表中的第一个。
  • 是的,没错,但这也是minmax 的工作方式。删除 index 不会改变这种行为,正如第二个使用 OrderedDict 的示例所证明的那样。
  • 这完全解决了我的问题!第一种方法确实需要我删除排序功能。我还没有了解 dict 结构,但我会研究一下。感谢您的帮助 Darkstarone!
猜你喜欢
  • 2014-12-12
  • 2015-01-12
  • 1970-01-01
  • 2013-06-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 2020-09-12
  • 2021-09-26
相关资源
最近更新 更多