今天在写脚本时,考虑到有一个功能需要取出字典中两个键之间的元素值,于是果断上手写代码,按照列表的形式,理所当然的写成了['键名':‘键名’]的形式进行切片,当然,程序的运行结果也给了我一个响亮的大耳光。如下图所示:
遇事不决找百度,然后在优快云的一篇文章中发现,字典和集合的键必须是可哈希类型,而切片操作是不可哈希类型(外行人刚开始写代码,对数据结构不太懂,所以这里其实我并不理解),所以不能对字典进行直接切片操作。那么我就继续查找如何能对字典进行切片操作呢,于是发现了一个方法,那就是通过将字典中的键取出构建成一个列表,然后根据列表中你需要的对应两个键之间的范围,找到对应的列表中的索引值,然后建立一个新的字典,采用循环取出你想要的键值对。
那么我想,如果一个字典很长,我只知道对应的两个键名,不想计算其在列表中的索引值了,于是我对原程序做了一个小改动,让列表自己找索引值。代码如下:
def dic_slice(start, end):
_dic = dic
keys = list(_dic.keys())
_dic_slice = {}
for key in keys[keys.index(start): keys.index(end)]: # 通过index方法,让列表自己找到索引值并返回
_dic_slice[key] = _dic[key]
_dic_slice[end] = _dic[end] # 这里我是想取包括这两个键之间的所有元素,所以将end对应键的值也传入了新字典
return _dic_slice
这样,使用时通过调用这个函数,就可以实现对字典进行切片啦!很方便。
参考博文:
http://t.csdn.cn/7fDEhhttp://t.csdn.cn/7fDEhhttp://t.csdn.cn/syki5
http://t.csdn.cn/syki5