# Python – Values frequency across Dictionaries lists

• Last Updated : 08 Mar, 2023

Given two list of dictionaries, compute frequency corresponding to each value in dictionary 1 to second.

Input : test_list1 = [{“Gfg” : 6}, {“best” : 10}], test_list2 = [{“a” : 6}, {“b” : 10}, {“d” : 6}}]
Output : {‘Gfg’: 2, ‘best’: 1}
Explanation : 6 has 2 occurrence in 2nd list, 10 has 1.

Input : test_list1 = [{“Gfg” : 6}], test_list2 = [{“a” : 6}, {“b” : 6}, {“d” : 6}}]
Output : {‘Gfg’: 3}
Explanation : 6 has 3 occurrence in 2nd list.

Method #1: Using dictionary comprehension + count() + list comprehension

The combination of above functionalities can be used to solve this problem. In this, we perform this task using 2 steps, in first we extract all values from second list, and then perform mapping with frequency with first dictionary using list comprehension and count().

## Python3

 `# Python3 code to demonstrate working of``# Values frequency across Dictionaries lists``# Using list comprehension + dictionary comprehension + count()` `# initializing lists``test_list1 ``=` `[{``"Gfg"` `: ``6``}, {``"is"` `: ``9``}, {``"best"` `: ``10``}]``test_list2 ``=` `[{``"a"` `: ``6``}, {``"b"` `: ``10``}, {``"c"` `: ``9``}, {``"d"` `: ``6``}, {``"e"` `: ``9``}, {``"f"` `: ``9``}]` `# printing original list``print``(``"The original list 1 : "` `+` `str``(test_list1))``print``(``"The original list 2 : "` `+` `str``(test_list2))` `# extracting values from target dictionary``temp ``=` `[val ``for` `sub ``in` `test_list2 ``for` `key, val ``in` `sub.items()]` `# frequency mapping from 1st dictionary keys``res ``=` `{key : temp.count(val) ``for` `sub ``in` `test_list1 ``for` `key, val ``in` `sub.items()}` `# printing result``print``(``"The frequency dictionary : "` `+` `str``(res))`

Output

```The original list 1 : [{'Gfg': 6}, {'is': 9}, {'best': 10}]
The original list 2 : [{'a': 6}, {'b': 10}, {'c': 9}, {'d': 6}, {'e': 9}, {'f': 9}]
The frequency dictionary : {'Gfg': 2, 'is': 3, 'best': 1}```

Time complexity: O(n^2), where n is the total number of elements in both the input lists.
Auxiliary space: O(n), where n is the total number of elements in both the input lists.

Method #2: Using dictionary comprehension + operator.countOf() + list comprehension

The combination of above functionalities can be used to solve this problem. In this, we perform this task using 2 steps, in first we extract all values from second list, and then perform mapping with frequency with first dictionary using list comprehension and operator.countOf().

## Python3

 `# Python3 code to demonstrate working of``# Values frequency across Dictionaries lists``# Using list comprehension + dictionary comprehension + operator.countOf()``import` `operator as op``# initializing lists``test_list1 ``=` `[{``"Gfg"` `: ``6``}, {``"is"` `: ``9``}, {``"best"` `: ``10``}]``test_list2 ``=` `[{``"a"` `: ``6``}, {``"b"` `: ``10``}, {``"c"` `: ``9``}, {``"d"` `: ``6``}, {``"e"` `: ``9``}, {``"f"` `: ``9``}]` `# printing original list``print``(``"The original list 1 : "` `+` `str``(test_list1))``print``(``"The original list 2 : "` `+` `str``(test_list2))` `# extracting values from target dictionary``temp ``=` `[val ``for` `sub ``in` `test_list2 ``for` `key, val ``in` `sub.items()]` `# frequency mapping from 1st dictionary keys``res ``=` `{key : op.countOf(temp,val) ``for` `sub ``in` `test_list1 ``for` `key, val ``in` `sub.items()}` `# printing result``print``(``"The frequency dictionary : "` `+` `str``(res))`

Output

```The original list 1 : [{'Gfg': 6}, {'is': 9}, {'best': 10}]
The original list 2 : [{'a': 6}, {'b': 10}, {'c': 9}, {'d': 6}, {'e': 9}, {'f': 9}]
The frequency dictionary : {'Gfg': 2, 'is': 3, 'best': 1}```

Time Complexity: O(n)
Auxiliary Space:  O(n)

Method 3: Using a nested for loop

This program counts the frequency of values from the first list of dictionaries in the second list of dictionaries, and stores the results in a dictionary. The output is the frequency dictionary.

## Python3

 `# Python3 code to demonstrate working of``# Values frequency across Dictionaries lists``# Using nested for loop` `# initializing lists``test_list1 ``=` `[{``"Gfg"` `: ``6``}, {``"is"` `: ``9``}, {``"best"` `: ``10``}]``test_list2 ``=` `[{``"a"` `: ``6``}, {``"b"` `: ``10``}, {``"c"` `: ``9``}, {``"d"` `: ``6``}, {``"e"` `: ``9``}, {``"f"` `: ``9``}]` `# printing original list``print``(``"The original list 1 : "` `+` `str``(test_list1))``print``(``"The original list 2 : "` `+` `str``(test_list2))` `# empty dictionary to store the result``res ``=` `{}` `# iterate through each dictionary in test_list1``for` `dict1 ``in` `test_list1:``    ``# iterate through each key-value pair in the dictionary``    ``for` `key1, val1 ``in` `dict1.items():``        ``count ``=` `0``        ``# iterate through each dictionary in test_list2``        ``for` `dict2 ``in` `test_list2:``            ``# iterate through each key-value pair in the dictionary``            ``for` `key2, val2 ``in` `dict2.items():``                ``# check if the value is equal to the value in test_list1``                ``if` `val2 ``=``=` `val1:``                    ``count ``+``=` `1``        ``res[key1] ``=` `count` `# printing result``print``(``"The frequency dictionary : "` `+` `str``(res))`

Output

```The original list 1 : [{'Gfg': 6}, {'is': 9}, {'best': 10}]
The original list 2 : [{'a': 6}, {'b': 10}, {'c': 9}, {'d': 6}, {'e': 9}, {'f': 9}]
The frequency dictionary : {'Gfg': 2, 'is': 3, 'best': 1}```

Time complexity: O(n^3), where n is the length of the longer of the two input lists.
Auxiliary space: O(1) or constant.

My Personal Notes arrow_drop_up