Python按字母和数字排序字典键
假设我有一个这样的字典,
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)