我相对较新的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
答案 0 :(得分:3)
转换为:
diffList = []
for key in set(dict1.keys() + dict2.keys()):
if dict1.get(key) != dict2.get(key):
diffList.append(key)
这基本上做的是它生成一个新列表,其中包含来自两个dicts的唯一值。并非这些值对于每个键都是唯一的,并不一定是唯一的全局。
集合是一种数据结构,每个唯一值只能有一个条目。因此,它将确保它只有唯一的项目。这将确保您只检查一次密钥。
更新:根据问题的更新更改了一些内容。
答案 1 :(得分:2)
您发布的代码是"List Comprehension"
它转换为:
diffList = []
for key in set(dict1n.keys() + dict2.keys()):
if dict1.get(key) != dict2t.get(key):
diffList.append(key)
答案 2 :(得分:1)
英文是:
列出以下键:
dictX[key] is None
和:key not in dictY
具有相同的价值(dict.get()
的工作方式。)答案 3 :(得分:1)
英文:
set
- > set(dict1n.keys() + dict2.keys())
key for key in set(...)
if dict1.get(key) != dict2t.get(key)
dictX.get(key)
将返回None
,如果密钥不在dictX
中,但相同的密钥将然后在另一组)diffList = [ key ... ]