python - 有人可以解释这是如何通过字典循环的吗?

标签 python dictionary

我有两本词典,我想比较它们,看看两者有什么不同。我感到困惑的地方是 dict。这个有名字吗?

一切正常,我只是不太明白它为什么有效或它在做什么。

x = {"#04": 0, "#05": 0, "#07": 0, "#08": 1, "#09": 0, "#10": 0, "#11": 1, "#12": 1, "#14": 1, "#15": 1, "#17": 0, "#18": 1, "#19": 1, "#20": 1}

y = {"#04": 1, "#05": 0, "#07": 0, "#08": 1, "#09": 0, "#10": 0, "#11": 1, "#12": 1, "#14": 1, "#15": 0, "#17": 1, "#18": 1, "#19": 0, "#20": 1}

dict = {k: x[k] for k in x if y[k] != x[k]}

list = []

for k, v in dict.items()
  if v==0:
    difference = k + ' became ' + '0'
    list.append(difference)
  else:
    difference = k + ' became ' + '1'
    list.append(difference)

print(list)

它应该打印 ['#04 变成 0', '#15 变成 1', '#17 变成 0', '#19 变成 1'] 但我不明白dict 用于循环遍历 x 和 y 字典。

最佳答案

实现的过程是比较两个字典,假设它们具有相同的键(可能 y 可能有更多条目)。

为了快速进行这种比较,并方便下一个代码块,他们决定生成一个只包含具有不同值的键的字典。

为了生成这样的字典,他们使用了一种非常有效的“字典理解”。

现在,这个结构:

d = {k: x[k] for k in x if y[k] != x[k]}

可以重写为:

d = {}
for k,v in x:          # for each key->value pairs in dictionary x
    if y[k] != x[k]:   # if the corresponding elements are different
        d[k] = x[k]    # store the key->value pair in the new dictionary

您可以将上面的 x[k] 替换为 v

关于python - 有人可以解释这是如何通过字典循环的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55368472/

相关文章:

python - 从 NLTK 的 Penn Treebank 语料库样本创建字典?

c# - 从 json 文件制作动态字典

C# 我可以将字典中对象的属性显示为 ListControl.DisplayMember 吗?

c# - 如何在单元测试中断言字典

python - 试图使 Rpy2 2.1.9 与 R 2.12.1 一起工作的奇怪问题,在 Windows xp 下使用 Python 2.6 - Rpy 找不到 R.dll?

python - 进行输入验证的大多数 Pythonic 方式

python - 为什么允许列表自行追加?

python - 为什么在python中打开多个游标时sql会挂起?

python - 如何在一行for循环内的字典中添加另一个属性

dictionary - 避免需要冗余检查以映射给定的字符串零值?