📅  最后修改于: 2023-12-03 15:08:02.985000             🧑  作者: Mango
在Python中,我们可以使用collections
模块中的Counter
类来很容易地数出一个数组中各元素出现的次数。但如果数组中的元素是字典的话,我们该如何数出它们出现的次数呢?
下面是一个示例数组,其中包含了4个字典:
arr = [
{'a': 1, 'b': 2},
{'a': 1, 'b': 2},
{'c': 3},
{'d': 4, 'e': 5},
]
我们可以先将每个字典转换为可哈希的元组,然后将它们放到一个集合中,集合会自动去重,留下的元素就是不同的字典。最后,我们只需要数出这个集合的大小即可。
def count_dict_in_array(arr):
"""
统计一个数组中不同字典的数量。
Args:
arr: 包含多个字典的数组。
Returns:
int: 不同字典的数量。
"""
# 将每个字典转换为元组并放到一个集合中
unique_dicts = set([tuple(sorted(d.items())) for d in arr])
# 返回集合的大小
return len(unique_dicts)
现在我们来测试一下上述函数:
arr = [
{'a': 1, 'b': 2},
{'a': 1, 'b': 2},
{'c': 3},
{'d': 4, 'e': 5},
]
print(count_dict_in_array(arr)) # 输出:3
输出结果应该为3
,说明数组中有3个不同的字典。