我有一个python字典:
d = {'a1': 123, 'a2': 2, 'a10': 333, 'a11': 4456}
当我使用排序字典时,OrderedDict
得到以下输出:
from collections import OrderedDict
OrderedDict(sorted(d.items()))
# Output
# OrderedDict([('a1', 123), ('a10', 333), ('a11', 4456), ('a2', 2)])
有没有一种方法可以使其自然顺序:
OrderedDict([('a1', 123), ('a2', 2), ('a10', 333), ('a11', 4456)])
or
{'a1': 123, 'a2': 2, 'a10': 333, 'a11': 4456}
谢谢。
您很幸运:该natsort
模块可以提供帮助。首先,使用以下命令安装它:
pip install natsort
现在,您可以d.keys()
转到natsort.natsorted
并构建一个新的OrderedDict
。
import natsort
from collections import OrderedDict
d = {'a1' : 123,
'a2' : 2,
'a10': 333,
'a11': 4456}
keys = natsort.natsorted(d.keys())
d_new = OrderedDict((k, d[k]) for k in keys)
简短的版本涉及排序d.items()
( 从RomanPerekhrest的答案 得到了这个想法
):
d_new = OrderedDict(natsort.natsorted(d.items()))
d_new
OrderedDict([('a1', 123), ('a2', 2), ('a10', 333), ('a11', 4456)])
问题内容: myArray = [Step 6, Step 12, Step 5, Step 14, Step 4, Step 11, Step 16, Step 9, Step 3, Step 13, Step 8, Step 2, Step 10, Step 7, Step 1, Step 15] 如何以这种方式在上面对这个数组排序? 我很快使用了此功能,但它是按这种方式排序的 问题答案: 另
rank ▲ ✰ vote url 11 867 379 1107 url 用字典的值对字典进行排序 我有个字典,字典的值来自于数据库:一个是字符串,一个是数字.字符串是唯一的,所以键就是字符串. 我可以用键来排序,但是怎么用值来排序呢? 注:我已经看过另一个问题怎样对列表中的字典的键值对字典进行排序?,或许这种方法可以,但是我确实只需要一个字典,我想看看还有其他更好的方法. 对字典进行排序是不可
问题内容: 我有这个: 和[电影]数组。如何按名称的字母顺序对数组进行排序?我试过了: 和 但这不起作用,因为我没有访问电影的名称属性。 问题答案: 在传递给的闭包中,比较要排序的属性。像这样: 或以下要绕过案例的案例: 旁注: 通常,只有类型以大写字母开头;我建议使用and ,而不是and 。 例如,在操场上: 将按顺序 Swift5更新
问题内容: 我正在使用SQL Server,该列为a ,我想像这样对它进行排序: 到目前为止,我有: 但是此SQL语句将“ 14 Draft”放在“ 26”之后。 有人可以帮忙吗?谢谢 问题答案: 您的WHERE陈述很复杂。 看来您想按整数顺序对所有前导数字进行排序,然后再对其余部分进行排序。如果是这样,则应将其作为单独的子句进行操作,而不是尝试一并完成。您遇到的特定问题是,您只允许输入一个数字,
问题内容: 我有一个字典,其中每个键都引用一个int值。根据值将键排序到列表中的最佳方法是什么? 问题答案: mydict = {‘a’:1,’b’:3,’c’:2} >>> sorted(mydict, key=lambda key: mydict[key]) [‘a’, ‘c’, ‘b’]
问题内容: 我在排序包含整数的字符串时遇到问题。如果使用下面的代码,我将进行排序:1some,2some,20some,21some,3some,一些 但是我希望将其排序为:1some,2some,3some,20some,21some,一些 我怎样才能做到这一点? 谢谢! 问题答案: 这是有关如何执行此操作的独立示例(未特别优化): 输出量 说明 该示例使用一个常数来推断数字是否位于的起始位置。
问题内容: 我必须创建一种方法,该方法根据电子邮件按字母顺序对对象的 ArrayList 进行排序,然后打印排序后的数组。我在排序时遇到的麻烦。我已经对其进行了研究并尝试使用,但这对我不起作用。我当时是需要一个称为比较器的东西,但无法弄清楚它是如何工作的。我将不得不使用这些东西吗?还是像气泡排序或插入排序这样的东西可以用于这种事情? 这是我到目前为止的代码: 问题答案: 排序部分可以通过实现cus
问题内容: 我想按字母顺序对JAVA中的字符串进行排序,如下所示:AaBbCcDdEeFfGg之后是大写字母和小写字母。例如,如果我把AbaC退还给我AabC,谢谢! 问题答案: 如果先将字符放入数组中,则可以使用进行此操作。(为了使用不区分大小写的自定义比较器,它必须是对象数组,而不是基元。)