python 元组替代字典

大家应该都知道python字典背后的实现是依靠散列表的,散列表可真是个好东西,可以以极快的速度获取内存上的数据,但是任何强大的东西背后都是有做出牺牲的,比如散列表就是一个典型的以空间换时间的数据结构,散列表存储并不会将数组存满,而是会留存大概三分之一左右的内存不存任何数据,这就导致了我们在实际开发中如果遇到了要存储千万上亿级别的数据的时候,python的字典就会造成大量的内存浪费(如果你的设备内存足够大当我没说);

所以我们更希望在不造成大面积空间浪费的情况下而又能快速拿到数据,元组的重要性就体现出来了,下面以简短的代码表述一下普通元组和具名元组当成字典用:

一、普通元组

tuple1=[
        ('chn',20,'男'),
        ('chb',18,'女'),
        ('ch',13,'男')
]

#元组是不可变的,同时上面这个元组不能能过属性名称来获取数据
#要么普通的通过下标取数据,例如:
print(tuple1[0][1]) #20
print(tuple[0][0]) #chn

#或者用拆包,这样就比较像对象取数据了
name,age,sex=range(0,3)
print(tuple[0][name]) #chn
print(tuple[1][sex]) #女

当然,模块collections提供了具名元组,使得无需拆包,直接通过具名取数据

二、具名元组

#具名元组
namedTuple=[
        ('chn',20,'男'),
        ('chb',18,'女'),
        ('ch',13,'男')
]
named=collections.namedtuple('Person','name age sex')
namesd=[named(*item) for item in namedTuple]

print(namesd) 
#结果:
#[Person(name='chn', age=20, sex='男'), Person(name='chb', age=18, sex='女'), #Person(name='ch', age=13, sex='男')]


print(namesd[0][name])
#结果:
#chn

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值