字典是这样的:
{'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/