Python – Specific Characters Frequency in String List
Last Updated :
13 Mar, 2023
Given a String list, extract frequency of specific characters in the whole strings list.
Input : test_list = [“geeksforgeeks is best for geeks”], chr_list = [‘e’, ‘b’, ‘g’, ‘f’]
Output : {‘g’: 3, ‘e’: 7, ‘b’: 1, ‘f’ : 2}
Explanation : Frequency of certain characters extracted.
Input : test_list = [“geeksforgeeks”], chr_list = [‘e’, ‘g’]
Output : {‘g’: 2, ‘e’: 4}
Explanation : Frequency of certain characters extracted.
Method #1 : Using join() + Counter()
In this, we concatenate all the strings, and then Counter() performs task of getting all frequencies. Last step is to get only specific characters from List in dictionary using dictionary comprehension.
Python3
from collections import Counter
test_list = [ "geeksforgeeks is best for geeks" ]
print ( "The original list : " + str (test_list))
chr_list = [ 'e' , 'b' , 'g' ]
res = {key:val for key, val in dict (Counter("".join(test_list))).items() if key in chr_list}
print ( "Specific Characters Frequencies : " + str (res))
|
Output
The original list : ['geeksforgeeks is best for geeks']
Specific Characters Frequencies : {'g': 3, 'e': 7, 'b': 1}
Time complexity: O(n), where n is the length of the input string.
Auxiliary space: O(k), where k is the number of characters in the character list (chr_list).
Method #2 : Using chain.from_iterable() + Counter() + dictionary comprehension
In this, task of concatenation is done using chain.from_iterable() rather than join(). Rest all tasks are done as above method.
Python3
from collections import Counter
from itertools import chain
test_list = [ "geeksforgeeks is best for geeks" ]
print ( "The original list : " + str (test_list))
chr_list = [ 'e' , 'b' , 'g' ]
res = {key:val for key, val in dict (Counter(chain.from_iterable(test_list))).items() if key in chr_list}
print ( "Specific Characters Frequencies : " + str (res))
|
Output
The original list : ['geeksforgeeks is best for geeks']
Specific Characters Frequencies : {'g': 3, 'e': 7, 'b': 1}
Time complexity: O(n), where n is the length of the input string
Auxiliary space: O(k), where k is the length of the character list.
Method #3: Using count() method.count() method returns the number of times a particular element occurs in a sequence.
Python3
test_list = [ "geeksforgeeks is best for geeks" ]
print ( "The original list : " + str (test_list))
chr_list = [ 'e' , 'b' , 'g' ]
d = dict ()
for i in chr_list:
d[i] = test_list[ 0 ].count(i)
res = d
print ( "Specific Characters Frequencies : " + str (res))
|
Output
The original list : ['geeksforgeeks is best for geeks']
Specific Characters Frequencies : {'e': 7, 'b': 1, 'g': 3}
Time Complexity: O(n)
Auxiliary Space: O(n)
Method #4: Using operator.countOf() method
Python3
import operator as op
test_list = [ "geeksforgeeks is best for geeks" ]
print ( "The original list : " + str (test_list))
chr_list = [ 'e' , 'b' , 'g' ]
d = dict ()
for i in chr_list:
d[i] = op.countOf(test_list[ 0 ],i)
res = d
print ( "Specific Characters Frequencies : " + str (res))
|
Output
The original list : ['geeksforgeeks is best for geeks']
Specific Characters Frequencies : {'e': 7, 'b': 1, 'g': 3}
Time Complexity: O(N), where n is the length of the given string
Auxiliary Space: O(N)
Method #5: Using loop and conditional statement
- Initialize the list of strings test_list with a single string.
- Print the original list test_list.
- Initialize the list of characters chr_list whose frequency we want to count in the string.
- Initialize an empty dictionary res to store the result.
- Join all the strings in test_list into a single string using the join() method and store it in a variable joined_str.
- Loop through each character in joined_str and count its frequency if it is present in the chr_list.
- If a character is present in the chr_list and also present in the res dictionary, increment its count by 1. If a character is present in the chr_list but not in the res dictionary, add it to the dictionary with a count of 1.
- Print the result dictionary res which will contain the frequencies of the specific characters in the original string.
Python3
test_list = [ "geeksforgeeks is best for geeks" ]
print ( "The original list : " + str (test_list))
chr_list = [ 'e' , 'b' , 'g' ]
res = {}
for char in "".join(test_list):
if char in chr_list:
if char in res:
res[char] + = 1
else :
res[char] = 1
print ( "Specific Characters Frequencies : " + str (res))
|
Output
The original list : ['geeksforgeeks is best for geeks']
Specific Characters Frequencies : {'g': 3, 'e': 7, 'b': 1}
Time complexity: O(n), where n is the length of the string in the test_list.
Auxiliary space: O(n), since the result dictionary will have at most n/3 key-value pairs if all the characters in the string are from the chr_list.
Please Login to comment...