根据值列表在 python 中重新排序字典

新手上路,请多包涵

让我们考虑一本字典:

 sample_dict={1:'r099',2:'g444',3:'t555',4:'f444',5:'h666'}

我想按照包含我想要的字典键顺序的列表指定的顺序重新排序这本字典。让我们假设所需的订单列表是:

 desired_order_list=[5,2,4,3,1]

所以,我希望我的字典看起来像这样:

 {5:'h666',2:'g444',4:'f444',3:'t555',1:'r099'}

如果我能得到一个值列表也很好。意思是,结果可能是这样的:

 ['h666','g444','f444','t555','r099']

我如何以最不复杂的方式实现这一目标?

原文由 user699540 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 327
1 个回答

Python 3.6+ 的答案

Guido 保证字典将从 Python 3.7 开始订购,并且它们已经作为 3.6 中的实验性功能。答案已经以 Fastest way to sort a python 3.7+ dictionary 进行了 扩展。

在这种情况下,基于 desired_order_list 中包含的项目构建一个具有简单字典理解的新字典就可以了。

 sample_dict = {1: 'r099', 2: 'g444', 3: 't555', 4: 'f444', 5: 'h666'}
print(sample_dict)
>>> {1: 'r099', 2: 'g444', 3: 't555', 4: 'f444', 5: 'h666'}

desired_order_list = [5, 2, 4, 3, 1]

reordered_dict = {k: sample_dict[k] for k in desired_order_list}
print(reordered_dict)
>>> {5: 'h666', 2: 'g444', 4: 'f444', 3: 't555', 1: 'r099'}

原文由 François Leblanc 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题