将 for 循环转换为字典理解

convert for loop into dictionary comprehension

我有一个运行良好的小程序。我试图强迫自己 review\analyze 我的代码,以使我的代码(和我自己)变得更好。

我想知道这一小部分代码是否:

temp2 = {}
for key in sorted(temp1.keys()):
    temp2[key] = temp1[key]

无法改写为字典理解。

主要是由于我极度缺乏经验,我无法'convert' 这变成了一个理解。

循环所做的就是获取字典 temp1,对其进行排序并将新排序的 key:value 对放入 temp2.

正如我上面所说的,整个事情都是按原样进行的,但我正在努力学习 发现我可以改进的模式。

直接将其翻译成字典理解很容易:

temp2 = {key: value for key, value in sorted(temp1.items())}

如果你不想使用 value 作为决胜局,如果键是相等的,你也可以提供 key 所以你只根据 key:

temp2 = {key: value for key, value in sorted(temp1.items(), key=lambda x: x[0])}

尽管字典在 python-3.6 中是 "ordered" 并不意味着您应该依赖它(有序性正式只是一个副作用!)。最好使用 OrderedDict 并安全起见:

from collections import OrderedDict
temp2 = OrderedDict([(key, value) for key, value in sorted(temp1.items(), key=lambda x: x[0])])