首页 > 解决方案 > python中字典中的冒泡排序

问题描述

我正在尝试按降序进行冒泡排序

input={"m":1,"i":4,"s":4,"P":2}

output={"i":4,"s":4,"p":2,"m":1}

但发生类型错误。我怎样才能做到这一点?

下面是代码:

dict={"m":1,"i":4,"s":4,"P":2}
for key,value in dict.items():
    if(dict[key]<dict[key+1]):
        temp=dict[key]
        dict[key]=dict[key+1]
        dict[key+1]=temp
print(dict)        

标签: pythondictionarykey-valuebubble-sort

解决方案


字典没有顺序:如果您在字典中添加/删除/更新元素,则迭代键的顺序可能会改变。

所以你不能“排序”字典。但是,您可以做的是例如对2-tuples 列表进行排序,例如:

my_list = list(my_dict.items())

然后我们检索:

>>> my_list
[('m', 1), ('i', 4), ('s', 4), ('P', 2)]

然后我们可以对列表进行排序(例如使用bubblesort),如下所示:

for mx in range(len(my_list)-1, -1, -1):
    swapped = False
    for i in range(mx):
        if my_list[i][1] < my_list[i+1][1]:
            my_list[i], my_list[i+1] = my_list[i+1], my_list[i]
            swapped = True
    if not swapped:
        break

然后,我们有:

>>> my_list
[('i', 4), ('s', 4), ('P', 2), ('m', 1)] 

推荐阅读