在python中使用插入排序时给出key error=0

在python中使用插入排序时给出key error=0,python,insertion-sort,Python,Insertion Sort,在我的彩票游戏中,我需要创建1000名玩家,每个玩家都有一个号码集,需要与中奖号码集进行比较。所有的数字集都来自一桶0-30个数字。这一部分我已经做了,但是现在我需要把球员的人数分为两组,分别是PWN和SWN。PWN是前6个数字,SWN是最后两个数字。Im需要使用插入排序对PWN进行排序,使用选择排序对SWN进行排序。我仍然没有参加SWN部分,因为我仍然在努力找出PWN排序 for example my program create something like below Winning nu

在我的彩票游戏中,我需要创建1000名玩家,每个玩家都有一个号码集,需要与中奖号码集进行比较。所有的数字集都来自一桶0-30个数字。这一部分我已经做了,但是现在我需要把球员的人数分为两组,分别是PWN和SWN。PWN是前6个数字,SWN是最后两个数字。Im需要使用插入排序对PWN进行排序,使用选择排序对SWN进行排序。我仍然没有参加SWN部分,因为我仍然在努力找出PWN排序

for example my program create something like below
Winning number 
19, 27, 23, 18, 1, 3, 2, 24

Player ID | Player Numbers
 1        | 8, 14, 3, 4, 10, 21, 2, 22
 2        | 13, 22, 9, 11, 23, 29, 16, 27
 3        | 10, 25, 22, 26, 8, 5, 23, 18

but I need to sort them like 
Winning number 

    PWN                |    SWN
19, 27, 23, 18, 1, 3   |   2, 24

Player ID | Player Numbers PWN        | Player Numbers SWN
 1        | 8, 14, 3, 4, 10, 21       |  2, 22
 2        | 13, 22, 9, 11, 23, 29     |  16, 27
 3        | 10, 25, 22, 26, 8, 5      |  23, 18
随机导入
#在程序中生成数据的主代码从这里开始
def GeneratorDomainNumber():
randomNumber=random。randint(0,30)#可以返回0到30之间的数字,包括0到30
返回随机数#返回随机数
def drawinninglotterynumber():#此函数生成中奖号码
LotteryDrawNumber=[]#列出生成的彩票号码的容器
对于范围(8)中的currentLotteryNumber:#对于保持生成8个计数的循环
randomNumber=GeneratorAndomNumber()#调用函数生成随机数
LotteryDrawNumber.append(randomNumber)#添加到列表的后面
返回乐透抽签号码#返回列表
def printWinningLotteryNumber(LotteryDrawNumber):#此函数用于打印中奖号码
对于范围内的currentLotteryNumberIndex(len(LotteryDrawNumber)):#对于循环,运行列表长度的打印功能
打印(LotteryDrawNumber[currentLotteryNumberIndex],end=”“)#打印数字
def draw():#此函数用于获取绘图函数并打印它
lotteryNumbers=drawWinningLotteryNumber()#调用函数绘制中奖号码
打印(“今天的8号彩票号码是:”)
printWinningLotteryNumber(LotteryNumber)#调用函数打印生成的号码
def generateID():#此函数用于创建乐透玩家及其号码
玩家={}
对于范围(11001)内的玩家id:
玩家列表=[]
对于范围(8)中的i:
player_list.append(generateRandomNumber())
玩家[玩家id]=玩家列表
#对于玩家中的玩家id:
#打印(“玩家{}有数字{}”。格式(玩家id,玩家[玩家id]))
普沃斯特(球员)
打印(“排序数组为:”)
对于范围内的i(len(玩家)):
打印(玩家[i])
#数据生成代码到此结束
def pwnSort(玩家):
对于范围内的i(1,len(玩家)):
key=玩家[i]
j=i-1
当j>0和key
当我运行这段代码时,它会创建数据并卡住,并在pwnSort()处给出以下内容

播放器984有数字[14,8,16,9,29,21,3,9]
玩家985有数字[28,15,1,19,30,23,29,2]
玩家986有数字[6,8,13,0,19,5,13,2]
玩家987有数字[29,13,9,16,28,8,15,20]
玩家988有数字[6,0,13,20,18,26,22,15]
玩家989有数字[29,13,17,16,18,13,14,8]
玩家990有数字[12,22,29,5,13,16,16,23]
玩家991有数字[18,0,12,11,11,6,19,24]
玩家992有数字[4,0,19,24,17,20,19,3]
玩家993有数字[24,28,10,4,8,13,19,6]
玩家994有数字[19,17,10,14,7,15,14,6]
玩家995有数字[1,18,24,5,29,19,20,2]
玩家996有数字[26,9,0,28,7,2,18,20]
玩家997有数字[19,8,8,30,14,0,5,8]
玩家998有数字[19,16,7,14,16,25,0,21]
玩家999有数字[15,27,29,10,4,28,12,30]
玩家1000有数字[8,18,6,6,17,25,6,16]
排序数组是:
回溯(最近一次呼叫最后一次):
文件“E:/User Profile/Documents/ACBT/Data-structures/assignment.py”,第86行,在
generateID()
文件“E:/User Profile/Documents/ACBT/Data-structures/assignment.py”,第40行,在generateID中
打印(玩家[i])
关键错误:0

所以基本上我想做的是打印插入排序的PWN编号,但是当我运行它时,它抛出了上面的错误。我能知道为什么以及如何修复这个问题吗?

你用错误的键在字典上迭代

下面是正确的代码:

for key in players: 
    print(players[key]) 

对于映射(如字典),
。\uuuu iter\uuuu()
应该迭代键。这意味着,如果您将字典直接放入for循环,Python将自动调用该字典上的
。\uuuu iter\uuuu()
,您将在其键上得到一个迭代器。

您使用错误的键在字典上进行迭代

下面是正确的代码:

for key in players: 
    print(players[key]) 

对于映射(如字典),
。\uuuu iter\uuuu()
应该迭代键。这意味着,如果您将一个字典直接放入for循环,Python将自动调用该字典上的
。\uuuu iter\uuuu()
,您将在其键上获得一个迭代器。

注意:我还没有检查排序算法的正确性。这个答案只解决了关键错误

是因为您试图在dict中查找不存在的密钥而引发的

def generateID():
    ...
    for player_id in range(1, 1001):  # Populates player IDs from 1, 2, 3...
        players[player_id] = ...

    for i in range(len(players)):     # Searches player IDs from 0, 1, 2...
        print (players[i]) 
一般来说,只需在球员身上打圈。由于它是一个字典,您可以使用
.items()
检索键和值:

def generateID():
    ...
    for id, player_list in players.items():
        print (player_list) 

注意:我没有检查您的排序算法的正确性。这个答案只解决了关键错误

是因为您试图在dict中查找不存在的密钥而引发的

def generateID():
    ...
    for player_id in range(1, 1001):  # Populates player IDs from 1, 2, 3...
        players[player_id] = ...

    for i in range(len(players)):     # Searches player IDs from 0, 1, 2...
        print (players[i]) 
一般来说,只需在球员身上打圈。由于它是一个字典,您可以使用
.items()
检索键和值:

def generateID():
    ...
    for id, player_list in players.items():
        print (player_list) 

这回答了你的问题吗?这回答了你的问题吗?