2011-05-17 37 views
0

的我是比較新的Python和有問題翻譯如下一行:翻譯這條巨蟒線

diffList = [key for key in set(dict1n.keys() + dict2.keys()) if dict1.get(key) != dict2t.get(key)] 

是否有人可以把它改寫了我 - 把它分解成多行「正常」好看格式?

我想 - 我不確定 - 該線路試圖做的是比較兩個字典並將差異輸出到列表。

謝謝。

更新:我有錯別字行 - 應該只有dict1和dict2:

diffList = [key for key in set(dict1.keys() + dict2.keys()) if dict1.get(key) != dict2.get(key 

回答

1

在英語中,它是:

列出這些按鍵是:

  • 存在在至少一個字典
  • 中,但在兩個字典中都不具有相同的值
    • 治療情況:dictX[key] is None和:key not in dictY具有相同的值(這是怎麼dict.get()作品)
2

您發佈的代碼是一個"List Comprehension"

它翻譯成:

diffList = [] 
for key in set(dict1n.keys() + dict2.keys()): 
    if dict1.get(key) != dict2t.get(key): 
    diffList.append(key) 
3

即翻譯爲:

diffList = [] 
for key in set(dict1.keys() + dict2.keys()): 
    if dict1.get(key) != dict2.get(key): 
     diffList.append(key) 

這基本上是做什麼的,它會生成一個新的列表,與來自兩個字典的唯一值。並不是說這些值每個關鍵字都是唯一的,並不一定是全球唯一的。

集合是一個數據結構,每個唯一值只能有一個條目。所以它會確保它只有獨特的項目。這將確保您只檢查一次每個密鑰。

更新:根據問題的更新更改了一些內容。

+0

哎呀,對不起,我有一個錯字 - 應該只有dict1和dict2即2個字典。 – henry000 2011-05-17 23:21:19

+0

更新了我的答案。 – Ikke 2011-05-18 06:34:26

1

英文:

  1. 獲取所有密鑰,並將它們存儲到一個set - >set(dict1n.keys() + dict2.keys())
  2. 迭代通過他們 - >key for key in set(...)
  3. 獲得這些密鑰,具有在不同的地圖不同的值: if dict1.get(key) != dict2t.get(key)
    (只有密鑰,即在兩個集合中:因爲dictX.get(key)將返回None,如果密鑰不在dictX中,但同一個密鑰將會是另一組中則)
  4. 這些密鑰存儲到一個列表:diffList = [ key ... ]
+0

「想要」是什麼意思? – 2011-05-17 10:20:22

+0

「想要」的簡稱? – 2011-05-17 11:25:34

+0

要求**更新**使用真實單詞的答案太多了嗎? – 2011-05-17 11:52:42