繁体   English   中英

为什么我的python字典排序功能不起作用?

[英]why my python dictionary sort function doesn't work?

该代码应该根据每个键的值对字典进行排序。 该函数将索引(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]

我认为您正在寻找OrderedDict。

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)])

ordered_dic按dic的值排序,然后将其用作普通dict。 例如:

for k, v in ordered_dic.items():
    print k, v

这给您:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM