将 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])])
我有一个运行良好的小程序。我试图强迫自己 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])])