You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中根据数组值对数据字典进行子集化?

问题

现有数据字典:

slots={'ibm':5, 'chev': 9, 'exx':10}

需要根据数组mod中的值对该字典进行子集化:

mod=['ibm', 'exx']

尝试了以下代码:

dict((i, slots)[i] for i in mod if i in slots)

出现错误:

TypeError: tuple indices must be integers or slices not str
解决方法

错误原因

你写的(i, slots)[i]是把i和slots打包成了一个元组(i, slots),然后试图用字符串i(比如'ibm')去索引这个元组——但元组只能用整数或切片做索引,所以触发了类型错误。

正确写法

你需要生成键值对元组,也就是(i, slots[i]),再传给dict():

dict((i, slots[i]) for i in mod if i in slots)

更简洁的写法(Python 2.7+)

用字典推导式,代码更直观:

{i: slots[i] for i in mod if i in slots}

两种写法最终都会得到子集化后的字典:{'ibm':5, 'exx':10}

内容的提问来源于stack exchange,提问作者user1471980

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 01:52:02