【发布时间】:2019-06-20 19:18:29
【问题描述】:
我想像这样创建一个字典的子集:
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 个键运行它时只得到一个输出?
【问题讨论】:
-
你能补充一下
tabledic的样子吗 -
('dev semi')不是元组,但('dev semi',)(注意额外的逗号)是。那是因为字符串周围的括号会计算为字符串。您需要逗号才能使其成为元组。当您执行for k in ('dev semi')时,它会遍历字符串中的每个字母。 -
请注意,
dictex={k: val[i] for ind, k in enumerate (key)}习惯性地写成dictex = dict(zip(key, val)),如果val从未被重复使用,则不需要给它命名dictex = dict(zip(key, np.arange(len(key))))或只是dictex = dict(zip(key, range(len(key)))) -
谢谢,确实看起来更整洁
标签: python dictionary subset