我想创建一个字典的子集,如下所示:
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}
为什么它不能用一个密钥运行?为什么当我用两个键运行它时,我只得到一个输出?
发布于 2019-06-21 03:23:24
这里的问题是:
subdic={k: dictex[k] for k in ('dev semi')}
('dev demi')
需要是一个tuple
,但实际上它只是一个带括号的字符串(因为只有一个元素)。对于强制tuple
,请将其更改为:
subdic={k: dictex[k] for k in ('dev semi',)}
项目后面的逗号强制它是一个单项目元组,因此k
将接受整个字符串的值,而不是它的单个字符。
发布于 2019-06-21 03:26:09
而不是
subdic={k: dictex[k] for k in ('dev semi')}
使用
subdic={k: dictex[k] for k in ('dev semi',)}
以使其成为一个元素的元组
https://stackoverflow.com/questions/56692563
复制相似问题