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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (10)

我想创建一个像这样的字典的子集:

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个键运行它时,为什么我只得到一个输出?

提问于
用户回答回答于

问题在于:

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

('dev demi')需要是a tuple,但事实上它只是一个带括号的字符串(因为只有一个元素)。对于强制a tuple,将其更改为:

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

该项后面的逗号强制它为单项元组,因此k将取整个字符串的值,而不是其单个字符。

用户回答回答于

代替

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

使用

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

这样它就成了一个元素的元组

所属标签

可能回答问题的人

  • 学生

    3 粉丝476 提问7 回答
  • uncle_light

    5 粉丝518 提问6 回答
  • 最爱开车啦

    8 粉丝503 提问5 回答
  • 骑牛看晨曦

    4 粉丝522 提问5 回答

扫码关注云+社区

领取腾讯云代金券