0

我目前正在尝试在单元测试中使用 a defaultdict。我这样声明。

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 '名称':'要出售',类型错误:列表索引必须是整数,而不是 str

我想知道怎么了。

4

2 回答 2

4

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

看起来你想创建一个默认的字典字典......

>>> 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'],它创建了一个新列表(应该是一个字典,但你要求defaultdict(list)所以你得到一个列表)。然后该新列表被用作new_list['DisplayStatusList'],这会产生您所看到的异常。

于 2013-07-03T07:11:09.913 回答