python - 如何按数字顺序Python按键对字典进行排序

标签 python sorting dictionary

字典是这样的:

{'57481': 50, '57480': 89, '57483': 110, '57482': 18, '57485': 82, '57484': 40}  

我想按数字顺序对字典进行排序,结果应该是:

{'57480': 89, '57481': 50, '57482': 18, '57483': 110, '57484': 40, '57485': 82} 

我尝试了 sorted(self.docs_info.items) 但它不起作用。

最佳答案

如果您只需要按键排序,那么您已经完成了 95%。假设您的字典似乎被称为 docs_info:

for key, value in sorted(docs_info.items()): # Note the () after items!
    print(key, value)

由于字典键始终是唯一的,因此在 docs_info.items()(这是一个元组序列)上调用 sorted 等同于仅按键排序。

请记住,包含数字的字符串排序不直观!例如“11”“2”“小”。如果您需要按数字对它们进行排序,我建议使用 int 而不是 str;例如

int_docs_info = {int(k) : v for k, v in docss_info.items()}

这当然只是改变了您访问字典元素的顺序,这通常就足够了(因为如果您不访问它,即使它被排序又有什么关系?)。如果出于某种原因您需要对字典本身进行“排序”,那么您将不得不使用 collections.OrderedDict,它会记住项插入其中的顺序。所以你可以先对你的字典进行排序(如上所述),然后从排序的(键,值)对中创建一个 OrderedDict:

sorted_docs_info = collections.OrderedDict(sorted(docs_info.items()))

关于python - 如何按数字顺序Python按键对字典进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22264956/

相关文章:

python 对文件的扩展名/名称进行排序

javascript - 按值生成排名数字

python - 是否可以将带有无关元素的字典传递给 Django object.create 方法?

c++ - 根据键字符串使用迭代器更改嵌套映射的 int 值

java - 在 Java 中使用 Guava BiMap

python - 使用 Python 随机配对列表中的项目

python - 为什么 "bare"CPU 上的 Keras 模型更快?

javascript - 将指定排序条件的对象数组排序为字符串

sorting - VBScript WQL 排序结果集?

python - 使用 Pydev 开发时抑制警告 Eclipse