两个嵌套字典的Unittest相等

时间:2016-11-22 10:03:02

标签: python unit-testing dictionary

如果我想比较其中包含assert个值的2个词组,我应该使用哪个list语句。

例如,如果这些dicts是这样的:

{'other_parts': ['director', 'head', 'chief', 'leader', 'administrator'], 'headword': 'manager', 'language': 'en'}

{'other_parts': ['director', 'chief', 'head', 'leader', 'administrator'], 'headword': 'manager', 'language': 'en'}

我想要比较这两个dicts,因为我不关心嵌套列表中的顺序。 与assertDictEqual的比较失败,因为我认为other_parts的嵌套列表的顺序不同。

2 个答案:

答案 0 :(得分:1)

如果您不关心订单,则必须对列表进行排序或使用一套(仅当您确定列表不会包含重复内容时!)

dict1['other_parts'] = sorted(dict1['other_parts'])
dict2['other_parts'] = sorted(dict2['other_parts'])
assertDictEqual(dict1, dict2)

答案 1 :(得分:1)

在修改你的问题之后,似乎AssertCountEqual正是你正在寻找的 - 正如documentation中所解释的那样。 如果它不适用于整个结构,我会使用循环在每个内部列表上运行它。