常见错误整理

1.Python 3.2 Lambda语法错误

def sort_dictionary( wordDict ):
    sortedList = []
    for entry in sorted(wordDict.iteritems(), key = lambda (k, v): (-v, k) ):
        sortedList.append( entry )

    return sortedList

 遇到错误:

    for entry in sorted(wordDict.iteritems(), key = lambda (k, v): (-v, k)):
                                                           ^
SyntaxError: invalid syntax

解决办法:

使用python 2.7.2运行时该函数工作正常

在Python3中不允许使用括号来解压缩lambda中的参数.

lambda (k, v): (-v, k)

而是使用:

lambda kv: (-kv[1], kv[0])

所以修改后运行:

def sort_dictionary(wordDict ):
    sortedList = []
    for entry in sorted(wordDict.items(), key = lambda kv: (-kv[1], kv[0]) ):
        sortedList.append( entry )

    return sortedList


wordDict = {"this":1,"是":3,"a":0,"大":2,"句子":9}
f=lambda kv:(-kv[1], kv[0])
print(f((1,2)))
kk = sort_dictionary(wordDict )
print(kk)


>>>(-2, 1)
>>>[('句子', 9), ('是', 3), ('大', 2), ('this', 1), ('a', 0)]

2.Python报错:'dict' object has no attribute 'iteritems'

错误原因
首先我们先看一下报错:

AttributeError: 'dict' object has no attribute 'iteritems'

翻译过来是:

属性错误:“dict”对象没有属性“iteritems”

这样我们就可以理解了,原因是对象本身出现了问题,并不是我们输入错误。

原因在于:python3中已经没有 “iteritems” 这个属性了,现在属性是:“ items ” 。

当然,如果你使用的是以前的Python版本,不会出现这个错误。
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值