weixin_44562468
草地打滾的熊
2019-07-22 20:22
采纳率: 33.3%
浏览 659

小白求助:python报错怎么解决 ?

python 报错:AttributeError: ("'list' object has no attribute 'map'", 'occurred at index 0')

def function(x, y, z):
    if x <= 100 and y == 'AB':
        return (list(z).map(concept_hierarchy(0))) * disc
    elif x <= 200 and y == 'AC':
        return (list(z).map(concept_hierarchy(1))) * disc
    else:
        return None
data['abc'] = data.apply(lambda x: function(x['a'], x['b'], x['c']), axis=1)

代码主要是对数据表里面,C列的值(特征较多,字符型)进行关系映射(转为数值)。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • hack_to_hell
    hack_to_hell 2019-07-23 10:54
    已采纳

    (list(z).map(concept_hierarchy(0))) * disc 这种写法,就是说在调用list的map成员函数,但list是python的内置类型,它没有map成员函数。
    你本来的意思是想用map高阶函数,用法其实很简单,给你推荐一个链接,一下你就明白了。
    https://www.liaoxuefeng.com/wiki/1016959663602400/1017329367486080

    点赞 评论
  • zaq15csdn
    greatofdream 2019-07-22 21:27

    不知道你的

    concept_hierarchy(0)
    

    是不是一个函数,并且也没看出在哪里调用了z,如果是的话,你应该把它改成

    list(map(lambda zi:concept_hierarchy(zi)*disc,z))
    

    按照我的理解写的,可能和你想表达的意思不一致,你参考一下map的用法,python3返回迭代器,所以又套了一层list在外面。

    点赞 评论
  • SpiritedAway1106
    积跬步以至千里。 2019-07-23 08:46

    A. map()是python内置的高阶函数,对于pyhon3,返回的是迭代对象,对于python2 ,返回的是列表

    B. 其参数为 map(function,list) ,function为可接收参数的函数名,list为待处理的列表对象,所以 你这里 list(z).map(concept_hierarchy(0))的调用方式是错误的,正确的调用方式应该是map(concept_hierarchy,list(z))

    C. 你的调用方式,可以理解为list.map(function),这种调用方式是错误的,且list对象,无map属性或方法,所以提示的报错是,'list' object has no attribute 'map'",另外 concept_hierarchy(0),我理解的是 concept_hierarchy是个你自定义的函数,但是这里不应该写入参数,map函数会自动迭代list参数(z?)的每个元素作为函数(concept_hierarchy)的参数,如果concept_hierarchy(0) 返回的是个固定值,则concept_hierarchy(0) 是不能作为map的function 参数的,因为function要求一定是个可接受参数的函数

    点赞 评论
  • qq_39412061
    吃鸡王者 2019-07-23 09:09

    map函数用的不对,应该是map(function,iterables)

    点赞 评论

相关推荐