如何让Python字典中的组以相反的排序方向排序,并且以一种优雅的方式进行排序?

vaj7vani  于 2023-05-02  发布在  Python
关注(0)|答案(1)|浏览(145)

我在字典中有数据,想在另一个字典中得到它,但按以下方式插入/排序:

  • 项按键的降序方式排序第一个字母:

'z':1,....,'a':1

  • 但是在具有相同首字母的项目组内部,具有相反的排序方向:

'aaa':1,' abb':1,'acc':1,....
这里我有这个任务的代码示例(按键排序),它可以工作,但我正在寻找更优雅的东西:

my_dict = {
        'abc': 'aaaa',
        'bus': 'bbba',
        'apple': 'abbb',
        'banana': 'bbaa',
        'angel': 'aabb',
        'baseball': 'baaa',
    }

    starting_letters = reversed(sorted({k[0] for k in my_dict.keys()}))
    result = {}

    for i in starting_letters:
        intermediate = {}
        for k in my_dict.keys():
            if k.startswith(i):
                intermediate[k] = my_dict[k]
        result.update(dict(sorted(intermediate.items())))

    print(result)

这是输出:
'banana':'bbaa',' baseball':'baaa',' bus ':'bbba',' abc ':'aaaa',' angel':'aabb',' apple':'abbb'}
你可以看到它是降序排序的:(键从B开始的项在键从a开始的项之前),但项组按升序排序:
'banana':' bbaa','baseball':'baaa',' bus ':'bbba'
'abc':' aaaa','angel':'aabb',' apple':'abbb'

li9yvcax

li9yvcax1#

Karl Knechtel的建议有很好的答案,但我没有找到我想要的答案,所以我有自己的答案:

dict(
    sorted(
        sorted(my_dict.items()), 
        key=lambda x: x[0][0], 
        reverse=True
    )
)

相关问题