声明defaultdi的正确方法

2024-05-14 07:55:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在unittest中使用defaultdict。 我这样声明。在

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

它失败了

Traceback (most recent call last): File "/home/maazza/PycharmProjects/django_test/app_tester/tests.py", line 422, in test_save_display_status 'Name': 'To sell', TypeError: list indices must be integers, not str

我不知道怎么了。在


Tags: tonametest声明mostresponseunittestlist
2条回答

您创建了一个字典,其中每个键都有一个列表作为其值,但是您尝试使用字符串索引访问其中一个列表项。。。在

看来你想创建默认词典。。。在

>>> 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'}]}})

使用此方法时,应该声明defaultdict(dict)。现在的情况是您正在访问dic_response['d'],这将创建一个新的列表(它应该是dict,但是您要求defaultdict(list)所以您得到了一个列表)。然后这个新列表被用作new_list['DisplayStatusList'],这将产生您看到的异常。在

相关问题 更多 >

    热门问题