使用理解力创建字典,其中值是关键

问题描述

我正在尝试使用以下理解词典来生成一个字典,其中value是一个列表。

>>> x = ['a','b','c']
>>> y = {'a':1,'b':2}
>>> z = {i:[].append(j) for (i,j) in y.items() if i in x and j < 2}

>>> z
{'a': None}

我正在尝试获取

{'a':[1]}

有人可以让我知道该怎么做吗?我认为我正在获得None作为值,因为它正在充当函数并返回None。

解决方法

代码

x = ['a','b','c']
y = {'a':1,'b':2}

z = {key: [y[key]] for key in list(y.keys()) if key in x and y[key] < 2}
print(z)

输出:

{'a': [1]}

说明

  1. 我用 ylist(y.keys()) 得到每把钥匙
  2. 如果他们的键在 x 我继续否则我跳到下一个键
  3. 如果满足上述条件,我控制 key 中的 y 值是否小于 2
  4. 如果同时满足上述条件,我会在 z 中创建一个新项目,以 key 为键,一个包含 y 值作为值的列表

您的代码中的错误只是 [].append(j) 返回了 None,因此您只能做广告:

z = {i:[j] for (i,j) in y.items() if i in x and j < 2}

另一件奇怪的事情是为 j 创建一个列表,它是一个单一的值,但是,因为您在预期的输出中需要它,而且您肯定有这样做的理由,我保留了您想要的输出,但一般来说,如果是单个值,最好直接将其存储在 dict 中,而不是在 dict 中为其创建嵌套列表