Python 如何在字典上应用排序算法?

Python 如何在字典上应用排序算法?,python,dictionary,insertion-sort,Python,Dictionary,Insertion Sort,我有一本字典das: d={3:a',5:g',1:t',4:y'} 我想对其进行排序,结果如下: d={1:t',3:a',4:y',5:g'} 为了得到这个结果,我需要对列表应用排序算法,比如插入排序或选择排序。如何实现它?如果您想尝试不使用内置函数,下面是快速排序的示例: def quicksort(data, left, right): if left+1 >= right: return ai, bi, ci = left, (left+rig

我有一本字典
d
as:

d={3:a',5:g',1:t',4:y'}
我想对其进行排序,结果如下:

d={1:t',3:a',4:y',5:g'}

为了得到这个结果,我需要对列表应用排序算法,比如插入排序或选择排序。如何实现它?

如果您想尝试不使用内置函数,下面是快速排序的示例:

def quicksort(data, left, right):
    if left+1 >= right:
        return
    ai, bi, ci = left, (left+right)//2, right-1
    a, b, c = data[ai], data[bi], data[ci]
    if a < b:
        if c < a:
            pos = ai
        elif c < b:
            pos = ci
        else:
            pos = bi
    else:
        if c < b:
            pos = bi
        elif c < a:
            pos = ci
        else:
            pos = ai
    pivot = data[pos]
    data[pos] = data[right-1]
    tail = left
    for i in range(left, right-1):
        if data[i] < pivot:
            data[tail], data[i] = data[i], data[tail]
            tail += 1
    data[right-1], data[tail] = data[tail], pivot
    quicksort(data, left, tail)
    quicksort(data, tail+1, right)

mydict = { 'a': 1, 'b': 4, 'c': 9, 'd': 3, 'e': 1 }
values = [value for key, value in mydict.items()]
quicksort(values, 0, len(values))
print(values)
def快速排序(数据,左,右):
如果左+1>=右:
返回
ai,bi,ci=left,(left+right)//2,right-1
a、 b,c=数据[ai],数据[bi],数据[ci]
如果a
冒泡排序,此处不建议对项目进行排序,但由于运行时复杂性为O(n^2),因此不建议进行排序:

def顺序(x,y):
如果x[1]

在为任何类型的排序算法创建代码后,您只需遍历项。

您想按键对dict进行排序。如果我很了解你,你想用你选择的排序算法(不是内置算法)对它们进行排序

所以你应该:

  • 实现你的排序算法
  • 将其应用于dict键
  • 创建按键排序的新词典
伪代码:

d = {3: 'a', 5: 'g', 1: 't', 4: 'y'}

# Get the keys as list
d_keys = list(d.keys()) # [3, 5, 1, 4]

# Here, you implement your sorting algorithm on 'd_keys'
# ...
# At the end, you get 'sorted_keys' ('d_keys' sorted): sorted_keys == [1, 3, 4, 5]

# Here you create the new dictionary: (via dictionary comprehension):
sorted_dict = {k:d[k] for k in sorted_keys}

print(sorted_dict)
输出:

d = {1: 't', 3: 'a', 4: 'y', 5: 'g'}
您可以在此处找到Python中的插入排序算法实现:

选择和排序如下:


但是,如果您要求的是类似“我可以将自己的算法传递给内置的
sorted
方法吗”,答案是否定的。但是,
sorted
允许您选择如何比较元素。您可以在这里找到更多信息:和。

dict(sorted(d.items())
如果您的意思是不应该使用内置的
sorted
,并实现插入排序算法,遍历字典中的项并比较键,就像比较整数数组插入排序中的整数一样。
d = {1: 't', 3: 'a', 4: 'y', 5: 'g'}