将for循环转换为字典理解

时间:2017-06-14 00:25:52

标签: python dictionary python-3.6 dictionary-comprehension

我有一个很好的小程序。我试图强迫自己审查\分析我的代码,以便尝试使我的代码(和我自己)更好一点。

我想知道这段代码是否只有:

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

无法重写为词典理解。

由于我缺乏经验,我无法“转换” 这让人理解。

所有循环都采用字典temp1,对其进行排序并将新排序的key:value对放入temp2

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

1 个答案:

答案 0 :(得分:2)

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

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

如果您不想使用value作为决胜局,如果密钥相等,您还可以提供key,因此您只需根据{{1}进行排序}:

key

尽管词典在python-3.6中被“排序”并不意味着你应该依赖它(有序性正式只是副作用!)。最好使用temp2 = {key: value for key, value in sorted(temp1.items(), key=lambda x: x[0])} 并保持安全:

OrderedDict