应用案例
现有一个数字列表,需计算列表中出现次数大于列表长度一半的数字,找到一个后即可返回;(当列表个数是奇数时,列表元素个数向上取整)。
思路分析
上述题目核心点在于统计列表中的元素个数,解题方法是创建一个字典,字典键是元素,字典键对应的值是该元素出现的个数,当在遍历的过程中字典某个键的值大于列表长度一半时,返回相应字典的键即可。
代码实现
def MorelistLength(numbers):
num_len = len(numbers) // 2
d = {}
max = 0
for i in numbers:
#当前字典d中没有i键时,插入元素
if d.get(i) is None:
d[i] = 1
#当前字典d中有i键时,元素个数+1
else:
d[i] += 1
if d[i] > max:
max = d[i]
if max > num_len:
return i
return None
print(MorelistLength([1,1,1,1,1,3,3,3,3,3,1,1]))
上述代码的执行结果如下:
1
案例推广
同样,该案例也可推广至其它类型的列表中,如下:
print(MorelistLength(['da','na','da','sa','da','da']))
执行结果如下:
da
print(MorelistLength([2,'na',2,'sa',2,2]))
执行结果如下:
2