问题描述
我正在尝试使用以下理解词典来生成一个字典,其中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]}
说明
- 我用
y
从list(y.keys())
得到每把钥匙 - 如果他们的键在
x
我继续否则我跳到下一个键 - 如果满足上述条件,我控制
key
中的y
值是否小于 2 - 如果同时满足上述条件,我会在 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 中为其创建嵌套列表