如何在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
相关产品推荐
相关产品推荐

