python列表如何删除第一个和最后一个_删除python中列表字典中的最后一个元素

在列表字典中删除每个列表的最后一个元素有什么更加pythonic或有效的方法?

例如,拿这个:

listDict = {'tom': [-2,10,2,-8], 'sam': [-9,-10,-10,-7]}

并将其转化为:

listDict = {'tom': [-2,10,2], 'sam': [-9,-10,-10]}

这就是我目前正在做的事情:

new = {}

for t,item in listDict.iteritems():

new[t] = [item[0], item[1], item[2]]

listDict= new

解决方法:

与此解决方案相比,随着列表长度的增加,Blender的答案变得非常低效:

for k, v in listDict.items():

v.pop()

对于你的示例listDict,差异并不大,只有27%.但是使用带有100个密钥的dict和长度从50到100的列表,并弹出50个,dict理解方法需要的时间要长12倍.这是因为此解决方案修改了存在列表,而不是每次都创建每个列表的副本.

我担心没有单行版本,除非你是cheating.我提到这一点的原因是为了防止某些dofus感到被迫在评论中指出它.请不要使用dict / list comprehensions进行副作用.

当然你可以在一行上完成如下操作,但PEP8说“而不是”:

for k, v in listDict.items(): v.pop()

标签:python,dictionary

来源: https://codeday.me/bug/20190713/1447048.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值