如何从可变数量的键中创建字典的子集?

2024-09-29 22:04:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建字典的一个子集,如下所示:

key=['a','b','c']
val=[1,2,3]

dictex={k: val[i] for ind, k in enumerate (key)}
subdic={k: dictex[k] for k in ('a')}
print(subdic)

输出:

{'a': 3}

然而,当我用我的字典做它不工作。你知道吗

以下是我正在使用的密钥列表:

key=list(tabledic.keys())
print (key)

输出:

['INTRO sheet',
 'Mo-G-development',
 'DIE-deposition-250nm',
 'Die-development-250nm',
 'Etching test',
 'Die-deposition-150nm',
 'Die-development-150nm',
 'Die-dev-day3-before-starting',
 'Die-development-day3',
 'dev semi',
 'deposition GIZO',
 'Deposition SD',
 'SD-development ']

下面是我正在运行的代码:

#random list of values for dictionary
val=np.arange(len(key))
#create the dictionary

dictex={k: val[i] for ind, k in enumerate (key)}
subdic={k: dictex[k] for k in ('dev semi')}
print (subdic)

我得到以下错误:

KeyError                                  Traceback (most recent call last)
<ipython-input-155-d062206ef3f4> in <module>()
      3 
      4 dictex={k: val[i] for ind, k in enumerate (key)}
----> 5 subdic={k: dictex[k] for k in ('dev semi')}
      6 subdic

<ipython-input-155-d062206ef3f4> in <dictcomp>(.0)
      3 
      4 dictex={k: val[i] for ind, k in enumerate (key)}
----> 5 subdic={k: dictex[k] for k in ('dev semi')}
      6 subdic

KeyError: 'd'

当我这样运行时:

key=list(tabledic.keys())
val=np.arange(len(key))

dictex={k: val[i] for ind, k in enumerate (key)}
subdic={k: dictex[k] for k in ('dev semi', 'dev semi')}
print (subdic)

我得到这个输出:

{'dev semi': 2}

为什么它不能用一个键运行? 为什么我只得到一个输出,当我运行它与2键?你知道吗


Tags: keyindevforvallistdevelopmentprint
2条回答

而不是

subdic={k: dictex[k] for k in ('dev semi')}

使用

subdic={k: dictex[k] for k in ('dev semi',)}

所以它变成一个元素的元组

问题在于:

subdic={k: dictex[k] for k in ('dev semi')}

('dev demi')必须是tuple,但实际上它只是一个带圆括号的字符串(因为只有一个元素)。对于force a tuple,将其更改为:

subdic={k: dictex[k] for k in ('dev semi',)}

项目后面的逗号强制它成为单个项目元组,因此k将采用整个字符串的值,而不是单个字符的值。你知道吗

相关问题 更多 >

    热门问题