簡體   English   中英

python中字典中的氣泡排序

[英]bubble sorting in dictionary in 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)        

字典沒有順序 :如果您在字典中添加/刪除/更新元素,則鍵的迭代順序可以更改。

因此,您不能對字典進行“排序”。 但是,您可以做的是例如對2元組列表進行排序,例如:

my_list = list(my_dict.items())

然后,我們檢索:

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

然后我們可以像這樣對列表進行排序(例如,用bubbleort排序):

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

你的意思是這樣嗎?

dict={"m":1,"i":4,"s":4,"P":2}
sorted_values = sorted(dict.values(),reverse = True)
print sorted_values

但這不是“手動”冒泡排序。 因此,如果您必須自行冒泡排序,只需使用通過

values = dict.values()

然后對它們進行排序;)

正如timgeb在評論中已經提到的那樣,很抱歉,在我寫這篇文章之前沒有看到評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM