【发布时间】:2023-03-22 23:40:02
【问题描述】:
在 Python 中使用排序算法对列表字典进行排序
我正在尝试对列表字典进行排序(降序),而不使用 Python 中存在的固定函数和方法(即 sorted() 和 .sort())
我使用冒泡排序算法创建了一个函数。 但是它正在对元素进行排序,但键并没有与其对应的元素一起移动。
函数如下:
def bubbleDecDic(dictio):
end=len(dictio)
ndictio=dictio
country=list(dictio.keys())
for i in range(end-1,0,-1):
for j in range(i):
if ndictio[country[j]]< ndictio[country[j+1]]:
ndictio[country[j+1]], ndictio[country[j]]= ndictio[country[j]], ndictio[country[j+1]]
return ndictio
这是一个输入字典的例子:
swim={'Russia': [0, 1, 1], 'China': [1, 2, 0], 'Australia': [1, 0, 0], 'Cuba': [1, 0, 0], 'Canada': [2, 1, 0]}
# input dictionary
# Country: [ gold, silver, bronze]
# gold > silver > bronze
{'Russia': [0, 1, 1],
'China': [1, 2, 0],
'Australia': [1, 0, 0],
'Cuba': [1, 0, 0],
'Canada': [2, 1, 0]}
bubbleDecDic(swim)
输出保持键在同一位置并对元素进行排序:
{'Russia': [2, 1, 0],
'China': [1, 2, 0],
'Australia': [1, 0, 0],
'Cuba': [1, 0, 0],
'Canada': [0, 1, 1]}
我的目标是按元素排序,但键应该放在一起。
这是我想要得到的输出:
{'Canada': [2, 1, 0],
'China': [1, 2, 0],
'Australia': [1, 0, 0],
'Cuba': [1, 0, 0],
'Russia': [0, 1, 1]
}
【问题讨论】:
标签: python algorithm sorting dictionary