2011-05-17 97 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