栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Python中对具有键作为数字字符串的字典进行排序

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Python中对具有键作为数字字符串的字典进行排序

就像其他人指出的那样,字典有其自己的顺序,您不能像对列表那样对它们进行排序。

我想补充的一件事是,如果您只想按排序顺序浏览字典中的元素,那就是:

for k in sorted(a):    print k, a[k] # or whatever.

如果您希望列表理解(每个Alex):

sortedlist = [(k, a[k]) for k in sorted(a)]

我想指出的是,Alex的用法

key=int
不适用于您的示例,因为您的键之一是
'test'
。如果您真的希望他的数字在非数字之前排序,则必须传递一个
cmp
函数:

def _compare_keys(x, y):    try:        x = int(x)    except ValueError:        xint = False    else:        xint = True    try:        y = int(y)    except ValueError:        if xint: return -1        return cmp(x.lower(), y.lower())        # or cmp(x, y) if you want case sensitivity.    else:        if xint: return cmp(x, y)        return 1for k in sorted(a, cmp=_compare_keys):    print k, a[k] # or whatever.

或者,也许您对键足够了解,可以编写一个函数将其转换为排序正确的字符串(或其他对象):

# Won't work for integers with more than this many digits, or negative integers.MAX_DIGITS = 10def _keyify(x):    try:        xi = int(x)    except ValueError:        return 'S{0}'.format(x)    else:        return 'I{0:0{1}}'.format(xi, MAX_DIGITS)for k in sorted(a, key=_keyify):    print k, a[k] # or whatever.

这将比使用

cmp
函数快得多。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/624888.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号