繁体   English   中英

使用理解创建值是关键的字典

[英]creating dictionary where value is key using comprehension

我正在尝试使用以下理解方法字典生成一个字典,其中 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. 我用list(y.keys())y得到每个键
  2. 如果他们的键在x我继续否则我跳到下一个键
  3. 如果满足上述条件我控制,如果key中值y是smalller大于2
  4. 如果也满足上述条件,我将在 z 中创建一个新项目,以key为键,并创建一个包含y值作为值的列表

你的代码中的错误只是[].append(j)返回None所以你只能[].append(j)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM