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))

上記の STMT のエラー

['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 は dict 値のリストを出力しますが、itemgetter keyfunc を使用してソートできませんでした。

この問題を特定するのを手伝ってもらえますか?

4

2 に答える 2

1

展開するのを忘れていました。

n = hc.sort(key=operator.itemgetter(*_arg))
于 2013-08-20T15:08:06.907 に答える
0

リストはハッシュ可能な型ではありません。tuple現在持っている場所など、別のシーケンス タイプを使用しますlist

ただし、それ_argがシーケンスであることを考えると、それはあなたが望むものですitemgetterか? または、その中の値の 1 つが必要ですか?

于 2013-08-20T15:08:19.083 に答える