为循环python中的变量赋一个临时值

时间:2012-07-20 22:08:16

标签: python list if-statement dictionary

我有一个需要冒泡排序的项目列表。冒泡排序条件是,如果项目j在大多数结果集中排名高于项i,则在j中将项i与项FullList进行交换。除了一个小问题外,我有一个非常简单的冒泡排序。当FullList项未出现在其中一个结果集中时,我收到了一个关键错误。我需要输入一个值来补偿它,否则我的循环变得非常复杂,有很多if语句。如果我可以将诸如20之类的标记值分配给字典中不存在的任何值,那么我的循环将是完美的。任何人都可以帮助我吗?

FullList = [B,C,A,D,H,E,F,G]

Results1 = {'A':1,'B':2,'C':3,'D':4,'E':5}
Results2 = {'B':1,'D':2,'G':3,'F':4,'E':5}
Results3 = {'C':1,'D':2,'B':3,'A':4,'H':5}

Pseudo Code:

switch = True
while(switch):
switch = False
    for i in range(len(FullList)-1):
        if FullList[i+1]<FullList[i] in Results1 & 2:
           FullList[i],FullList[i+1] = FullList[i+1],FullList[i]
           switch = True
        elif FullList[i+1]<FullList[i] in Results1 & 3:
             FullList[i],FullList[i+1] = FullList[i+1],FullList[i]
             switch = True
        elif FullList[i+1]<FullList[i] in Results2 & 3:
             FullList[i],FullList[i+1] = FullList[i+1],FullList[i]
             switch = True

Key-Error: 'A' not in 'Results2'    

2 个答案:

答案 0 :(得分:1)

如果在获取排名时使用dict的get方法,则可以为缺少密钥时提供默认值。

答案 1 :(得分:1)

不确切知道您要做什么,但似乎get(key[, default])似乎是您所需要的,您可以查看此here

的详细信息

在您的情况下,Results2.get('A', 20)会给你20