关于Python实现字典切片操作

今天在写脚本时,考虑到有一个功能需要取出字典中两个键之间的元素值,于是果断上手写代码,按照列表的形式,理所当然的写成了['键名':‘键名’]的形式进行切片,当然,程序的运行结果也给了我一个响亮的大耳光。如下图所示:

遇事不决找百度,然后在CSDN的一篇文章中发现,字典和集合的键必须是可哈希类型,而切片操作是不可哈希类型(外行人刚开始写代码,对数据结构不太懂,所以这里其实我并不理解),所以不能对字典进行直接切片操作。那么我就继续查找如何能对字典进行切片操作呢,于是发现了一个方法,那就是通过将字典中的键取出构建成一个列表,然后根据列表中你需要的对应两个键之间的范围,找到对应的列表中的索引值,然后建立一个新的字典,采用循环取出你想要的键值对。

那么我想,如果一个字典很长,我只知道对应的两个键名,不想计算其在列表中的索引值了,于是我对原程序做了一个小改动,让列表自己找索引值。代码如下:

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/7fDEhicon-default.png?t=M3K6http://t.csdn.cn/7fDEhhttp://t.csdn.cn/syki5icon-default.png?t=M3K6http://t.csdn.cn/syki5

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值