Django:不可哈希类型:'list'

3

以下是我从函数中提取的代码片段,

它只是从Django查询集对象获取数据并转换为列表,使用itemgetter和itertools方法来去除重复项,类似于Python从列表中删除重复的字典

   hc = HomeContractorDetails.objects.filter(category=domain_obj.category,city__icontains=domain_obj.city).values(*args)
    _arg = list(args)
    _arg.remove('id')
    hc = list(hc)
    print _arg,hc

    n= hc.sort(key=operator.itemgetter(_arg))

以上语句出现错误。

['con_name', 'rating', 'review_no'] [{'rating': u'4.32', 'review_no': u'51', 'id': 3781, 'con_name': u"Carter's Mechanical, Inc."}, {'rating': u'4.02', 'review_no': u'29', 'id': 3782, 'con_name': u'All Mechanical Plumbing & Heating, Inc.'}, {'rating': u'4.17', 'review_no': u'5', 'id': 3783, 'con_name': u'Marcelo Construction'}, {'rating': u'4.63', 'review_no': u'34', 'id': 3784, 'con_name': u'Jay Ell Plumbing and Heating Company, Inc.'}, {'rating': u'4.94', 'review_no': u'24', 'id': 3785, 'con_name': u'Franco Belli Plumbing and Heating and Sons, Inc.'}]

File "/home/gridlex/workspace/HA/article/views.py" in fetch_contractor_tables
      213.     n= hc.sort(key=operator.itemgetter(_arg))

    Exception Type: TypeError at /article/top-rated-plumbing-contractors-in-new-york
    Exception Value: unhashable type: 'list'

变量hc打印出字典值列表。但是我无法使用itemgetter keyfunc进行排序。你能帮我找出问题所在吗?
2个回答

1
你忘记扩展了。
n = hc.sort(key=operator.itemgetter(*_arg))

0

列表不是可哈希的类型。在当前使用列表(list)的地方,使用一个不同的序列类型,比如 tuple

然而,考虑到 _arg 是一个序列,这是你想要用于 itemgetter 的吗?还是你想要其中的一个值?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接