【问题标题】:'map' object is not subscriptable in python3'map' 对象在 python3 中不可下标
【发布时间】:2019-05-15 10:29:11
【问题描述】:

我正在尝试将模块从 odoo 10 更新到 odoo12。以下代码在使用 python 2.7 但在 python 3.x 中出现地图问题的 odoo 10 中运行良好

def _get_search_domain(self, search, category, attrib_values):
    res =super(WebsiteSale,self)._get_search_domain(search,category,attrib_values)
    filter_list = request.httprequest.args.getlist('filter')
    domain = res
    filter_values = [map(int, v.split("-")) for v in filter_list if v]
    filters_ids = set([v[0] for v in filter_values])
    filter_set = set([v[1] for v in filter_values]) 
    if filter_values:
        filter = None
        ids = []
        list_of_d = []
        for value in filter_values:
            v = False 
            if not filter:
                filter = value[0]
                ids.append(value[1])
            elif value[0] == filter:
                ids.append(value[1])
            else:
                domain += [('filter_line_ids.value_ids', 'in', ids)]
                filter = value[0]
                ids = [value[1]]
        if filter:
            domain += [('filter_line_ids.value_ids', 'in', ids)]
    return domain

我收到错误消息:

'map' 对象不可下标

我从其他帮助中读到我应该用列表附上地图。我试过用下面的代码替换,但还是不行

filter_values = [list(map(int, v.split("-"))) for v in filter_list if v]

谁能帮帮我。谢谢!

【问题讨论】:

  • 添加列表转换后出现完全相同的错误?它发生在哪条线上?请发布完整的堆栈跟踪。

标签: python-3.x


【解决方案1】:
filter_values = [list(map(int, v.split("-"))) for v in filter_list if v]

为什么要将它转换为 List,因为 Filter_Values 是一个 dtype 列表

【讨论】:

    猜你喜欢
    • 2020-09-25
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多