#生成字典的结构
import random
dictA={}
for i in range(1,11):
listA = []
for j in range(1,11):
temp = random.randint(1, 10)
listA.append(temp)
dictA[i] = listA
print(dictA)
x=list(dictA.values())
print(x,type(x))
#将字典的所有values存入listB
listB=[]
for i in range(0,len(x)):
for j in range(0,len(x[i])):
listB.append(x[i][j])
print(listB)
#生成1—10的数字计数的列表
count=[]
for i in range(1,11):
temp=[i,0]
count.append(temp)
print(count)
#计数
for i in range(0,len(count)):
for j in range(0,len(listB)):
if listB[j]==count[i][0]:
count[i][1]+=1
print(count)
conutCopy=count
#找出出现次数最多的数
for i in range(0,len(count)-1):
for j in range(0,len(count)-i-1):
if count[j][1]>count[j+1][1]:
temp=count[j][1]
count[j][1]=count[j + 1][1]
count[j + 1][1]=temp
print(count)
#找出出现次数最多的数
#x=0
#for i in range(0,len(count)):
# _max=i
# for j in range(i+1,len(count)):
# if count[j]>count[_max]:
# _max=j
# x=j
# count[_max],count[j]=count[j],count[_max]
#print(count)
for i in range(0,len(count)):
if count[len(count) - 1][1]==conutCopy[i][1]:
x=conutCopy[i][0]
print("%s出现次数最多,出现%s次"%(x,count[len(count) - 1][1]))
运行结果:
出现的问题:
正确的输出结果应该是:1出现次数最多,出现16次
出现错误的原因:找出现次数最多的时候对刘表进行了一次排序,使得排序后的索引号发生了变化,为了解决索引号改变的问题,在排序前对count列表进行了一次复制,最后输出的时候依然是最后一个索引号的数字被输出,因为列表是存在堆里面,count列表和countCopy列表指向的地址相同,因此当count列表改变时,countCopy列表发生了同样的改变,这种列表传递方法在这里使用出现了问题,下面用了另一种思路来解决