Python按字母和数字排序字典键

-1 投票
1 回答
2131 浏览
提问于 2025-04-18 09:14

假设我有一个这样的字典,

d = {"John1" : "blah blah", "John2" : "blah blah", "John11" : "blah blah", "Dave1" : "blah blah", "Dave2" : "blah blah", "Dave13" : "blah blah", "Dave23" : "blah blah"}

如果我想把它排序成这样,

d = {"Dave1" : "blah blah", "Dave2" : "blah blah", "Dave13" : "blah blah", "Dave23" : "blah blah", "John1" : "blah blah", "John2" : "blah blah", "John11" : "blah blah", }

有没有办法可以先按字母顺序,然后再按数字顺序对这个字典的键进行排序呢?

1 个回答

1

请记住,字典本身并不是为了排序而设计的,但如果你只是想要一个字典键的排序列表:

sorted(d.keys())

你可以使用 sorted 函数,它可以提供各种很棒的排序功能,来满足你所有的需求。:)

根据键的命名,排序函数可能看起来像这样...

def my_key(item):
    alpha = ''.join(i for i in item if i.isalpha())
    num = ''.join(i for i in item if i.isdigit())
    if num:
        return (alpha, int(num))
    return (alpha, 0)

然后:

sorted(d.keys(), key=my_key)

撰写回答