洞察循环

Insight Into A Loop

嘿,我从 Whosebug 得到了这个,它计算了两个词典之间的共同值,但我希望有人能花时间分解这个过程,因为它没有在主题的答案部分解释。

我想我明白了;

dictionary1[key] for key in dictionary1 if key in dictionary2 and dictionary1[key] == dictionary2[key]

shared_items = {k: x[k] for k in x if k in y and x[k] == y[k]}
print(shared_items)

是否只匹配两个字典中键值匹配的地方?另外,为什么 k: 在开头?

无论如何,我知道这是一个随机问题,但这种类型的迭代非常巧妙,尤其是当您将 == 更改为 <= 和 >= 时,它真的很有用,希望有人能花时间分解它我可以绕过它。谢谢

这被称为'dict comprehension',类似于'list comprehension'。基本上,行

shared_items = {k: x[k] for k in x if k in y and x[k] == y[k]}

相当于:

shared_items = {}
for k in x:
    if k in y and x[k] == y[k]:
        shared_items[k] = x[k]