为什么我的python字典排序函数没有';不行?

为什么我的python字典排序函数没有';不行?,python,python-2.7,Python,Python 2.7,这段代码应该根据每个键的值对字典进行排序。 该函数将列表(即字典列表)中的每个元素与索引(x)进行比较,并将其与索引(x+1)进行比较。如果较小,则更改位置 def srt(dic): Als= list() Bls= list() ls = dic.keys() glenth = len (ls) count=0 t=0 while t < 200000: for x in range(0,len(ls)):

这段代码应该根据每个键的值对字典进行排序。 该函数将列表(即字典列表)中的每个元素与索引(x)进行比较,并将其与索引(x+1)进行比较。如果较小,则更改位置

def srt(dic):
    Als= list()
    Bls= list()
    ls = dic.keys()

    glenth = len (ls)
    count=0
    t=0
    while t < 200000:
        for x in range(0,len(ls)):
            count +=1
            A_value = dic[(ls[x])]

            if count >= len(ls):
                B_value = dic[(ls[count-1])]
                count -=1
            else:
                B_value = dic[(ls[count])]
            if A_value > B_value:
                continue
            else:
                A = ls[count-1]
                B = ls[count]
                ls[count-1] = B
                ls[count]  = A
    t +=1

    return ls

dic = dict()
dic = {'baraa':4,'Mohamed':30,'ali':40,'Mirghani':7,'Abuzaid':12,'ElonMask':3,'Jobs':1}
lst = srt(dic)
for x in lst:
    print x,dic[x]
def srt(驾驶员信息中心):
Als=列表()
Bls=列表()
ls=dic.keys()
格伦特=伦特(ls)
计数=0
t=0
当t<200000时:
对于范围(0,len(ls))内的x:
计数+=1
A_值=dic[(ls[x])]
如果计数>=len(ls):
B_值=dic[(ls[count-1])]
计数-=1
其他:
B_值=dic[(ls[计数])
如果A_值>B_值:
持续
其他:
A=ls[计数-1]
B=ls[计数]
ls[count-1]=B
ls[count]=A
t+=1
返回ls
dic=dict()
dic={'baraa':4,'Mohamed':30,'ali':40,'Mirghani':7,'Abuzaid':12,'ElonMask':3,'Jobs':1}
lst=srt(dic)
对于lst中的x:
打印x,dic[x]

我想您正在寻找订购的ICT

from collections import OrderedDict

dic ={'baraa':4,'Mohamed':30,'ali':40,'Mirghani':7,'Abuzaid':12,'ElonMask':3,'Jobs':1}
ordered_dic = OrderedDict(sorted(dic.items(), key=lambda t:t[1]))
print ordered_dic
输出:

OrderedDict([('Jobs', 1), ('ElonMask', 3), ('baraa', 4), ('Mirghani', 7), ('Abuzaid', 12), ('Mohamed', 30), ('ali', 40)])
已排序的dic按dic值排序,然后将其用作普通dic。例如:

for k, v in ordered_dic.items():
    print k, v
这将为您提供:

Jobs 1
ElonMask 3
baraa 4
Mirghani 7
Abuzaid 12
Mohamed 30
ali 40

那么,为什么不直接使用
sorted()
?实际上,只要
lst=sorted(dic,key=lambda x:dic[x])
@KevinGuan它在python2和python3上都有效。它返回名称列表,按其数值排序(先是Jobs,然后是ElonMask,然后是baraa…。@spectras我已经删除了我的评论,现在我知道OP在寻找什么了…他的函数中有一些奇怪的冒泡排序。(顺便说一句,上面这一行可以稍微更有效地完成,尽管有点“神奇”,因为
lst=sorted(dic,key=dic.\uu getitem\uuuu)