问题描述
此功能用于计算数字数组的模式。语法错误在def函数的第二个for循环中发生,我无法理解该语法错误的根本问题,请帮帮我
def mode(arr):
numbers = {}
for num in arr:
numbers[num] = numbers.get(num,0) + 1
max_occ = max(list(numbers.values())
for key in numbers:
mode_list = []
if numbers[key] == max_occ:
mode_list.append(key)
mode = min(mode_list)
return mode
解决方法
错误不在第二个循环中,错误在第4行中,您错过了一个括号
max_occ = max(list(numbers.values())**)**
对于数字数组的计算方式,您也可以尝试此
from collections import Counter
num = [1,2,3,4,5,4]
n = len(num)
data = Counter(num)
find_mode = dict(data)
mode = [k for k,v in find_mode.items() if v == max(list(data.values()))]
if len(mode) == n:
find_mode = "No mode found"
else:
find_mode = "Mode is: " + ','.join(map(str,mode))
print(find_mode)