python根据id取值_python字典列表根据指定元素取值

先建立 id 与所需值的字典关系:

In [9]: l = [{'id':13,'title':'2222','rank':1},{'id':25,'title':'33fff','rank':2},{'id':53,'title':'hhhh','rank':3},{'id':73,'title':'ffff','rank':4},{'id':23,'title':'kkkkk','rank':5}]

In [10]: d = [a['id'] for a in l]

In [11]: s = dict([(d[i], l[i]) for i in range(len(l))])

然后,一个简单的函数就可以调取前后值了:

In [12]: def func(num):

....: n = d.index(num)

....: if n == 0:

....: return s[d[n+1]]

....: elif n == len(d)-1:

return s[d[n-1]]

else:

....: return s[d[n+1]], s[d[n-1]]

....:

最终运行结果:

In [24]: func(73)

Out[24]:

({'id': 23, 'rank': 5, 'title': 'kkkkk'},

{'id': 53, 'rank': 3, 'title': 'hhhh'})

In [25]: func(13)

Out[25]: {'id': 25, 'rank': 2, 'title': '33fff'}

这种方式,效率上相对高一些,一方面字典取值速度更快,另一方面每次寻址都只需要寻一层,且建立的序列和字典可以重复多次调用。

当然,还有一种更高效的方式,但必须导入 collections模块,具体可以参考:

python 的有序字典

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值