📜  在数组中的字典数量 python (1)

📅  最后修改于: 2023-12-03 15:08:02.985000             🧑  作者: Mango

在数组中的字典数量 python

在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个不同的字典。