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)
字典没有顺序:如果您在字典中 add/remove/update 个元素,则迭代键的顺序可以改变。
所以你不能"sort"字典。但是,您 可以 做的是,例如对 2 元组列表 进行排序,例如:
my_list = list(my_dict.items())
然后我们检索:
>>> my_list
[('m', 1), ('i', 4), ('s', 4), ('P', 2)]
然后我们可以对 list 进行排序(例如使用冒泡排序),例如:
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
但这不是 "manual" 冒泡排序。因此,如果您必须自己对它进行冒泡排序,只需通过
使用值列表
values = dict.values()
然后对它们进行排序 ;)
正如 timgeb 已经在评论中提到的,很抱歉在我写这篇文章之前没有看到评论 post。
我正在尝试按降序冒泡排序
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)
字典没有顺序:如果您在字典中 add/remove/update 个元素,则迭代键的顺序可以改变。
所以你不能"sort"字典。但是,您 可以 做的是,例如对 2 元组列表 进行排序,例如:
my_list = list(my_dict.items())
然后我们检索:
>>> my_list
[('m', 1), ('i', 4), ('s', 4), ('P', 2)]
然后我们可以对 list 进行排序(例如使用冒泡排序),例如:
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
但这不是 "manual" 冒泡排序。因此,如果您必须自己对它进行冒泡排序,只需通过
使用值列表values = dict.values()
然后对它们进行排序 ;)
正如 timgeb 已经在评论中提到的,很抱歉在我写这篇文章之前没有看到评论 post。