为哈希表追加不重复的10个值,且每个值都是1-10 之间的随机数,问哪个数字重复的次数最多,重复了多少 次?

#生成字典的结构
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列表发生了同样的改变,这种列表传递方法在这里使用出现了问题,下面用了另一种思路来解决

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值