簡體   English   中英

將for循環轉換為字典理解

[英]convert for loop into dictionary comprehension

我有一個很好的小程序。 我試圖強迫自己查看\\分析我的代碼,以使我的代碼(和我自己)稍微好一點。

我想知道這小部分代碼:

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

不能被重寫為詞典理解。

主要是由於我非常缺乏經驗,所以我無法將其“轉化”為理解力。

循環所要做的就是將字典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中是“有序的”,也不意味着您應該依賴它(有序性在官方上只是副作用!)。 最好使用OrderedDict並保持安全:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM