洞察循环

问题描述

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

我想我明白了;

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]