0

現在defaultdict、単体テストで a を使用しようとしています。このように宣言します。

dic_response = defaultdict(list)
dic_response['d']['DisplayStatusList'] = [{
    'DisplayStatusID': 26,
    'Name': 'To sell'
}]

で失敗します

トレースバック (最新の呼び出しが最後): ファイル "/home/maazza/PycharmProjects/django_test/app_tester/tests.py"、422 行目、test_save_display_status 'Name': 'To Sell'、TypeError: リスト インデックスは str ではなく整数でなければなりません

何が悪いのだろうか。

4

2 に答える 2

4

各キーが値としてリストを持つ辞書を作成しましたが、文字列インデックスを使用してそれらのリスト項目の 1 つにアクセスしようとしました...

辞書のデフォルト辞書を作成したかったようです...

>>> from collections import defaultdict
>>> dic_response = defaultdict(dict)
>>> dic_response['d']['DisplayStatusList'] = [{'DisplayStatusID': 26, 'Name': 'To sell'}]
>>> dic_response
defaultdict(<type 'dict'>, {'d': {'DisplayStatusList': [{'DisplayStatusID': 26, 'Name': 'To sell'}]}})
于 2013-07-03T07:11:20.200 に答える
2

これを使用している方法では、宣言する必要がありますdefaultdict(dict)。現在起こっていることはdic_response['d']、新しいリストを作成する にアクセスしていることです (これは dict である必要がありますが、要求したdefaultdict(list)のでリストを取得しています)。次に、その新しいリストがとして使用されておりnew_list['DisplayStatusList']、これにより、表示されている例外が生成されます。

于 2013-07-03T07:11:09.913 に答える