How to combine similar characters in a Python List

Given a list or string, the task is to combine all similar characters of the list or string and print in a list. First, find the frequency of all characters and store in a dictionary with key as the character and its value as the frequency in a given list or string.
For that, we have a few methods,

  1. Native approach.
  2. By using dict.get().
  3. By using the counter.

Method 1:

  • Simply start iteration through the list and form a key in a dictionary of newly occurred character or if a character is already occurred then increase its value by 1.
  • Then separates the key and values from this dictionary and store in the other two V, K lists.
  • By using the zip() built-in function for mapping the values from V to K.
  • Then multiply every key from K with its value from V respectively.
  • Append the multiplied value in the product list and print it.

Below the implementation of the procedure.

s = ['c','o','d','e','s','p','e','e','d','y']  # initialize the list 
                                      
dict1={}                # dictionary
for i in s:             # method to get count each character of list.
    key = dict1.keys()   
    if i in key:
        dict1[i]+=1
    else:
        dict1[i]=1
v = list(dict1.values())       # v = [1, 1, 2, 3, 1, 1, 1]
k = list(dict1.keys())         # k = ['c', 'o', 'd', 'e', 's', 'p', 'y']
product = []
for i,j in zip(k,v):
    product.append(i*j)        # i*j = 'c'*1='c'.....'d'*2='dd'...
print(product)

OUTPUT:

['c', 'dd', 'eee', 'o', 'p', 's', 'y']

Method 2:

  • In this method, we use dict.get() method for counting the frequency of every character in the list.
  • here get() method is used to check the previous value in the list if it is new then initials with 0 and append 1 to it, else append 1 to the previously held value of that character in the dictionary.
  • After we separate the dict_keys and dict_values from the dictionary in V & K.
  • By using the zip() built-in function for mapping the values from V to K.
  • Then multiply every key from K with its value from V respectively.
  • Append the multiplied value in the product list and print it.

Below the implementation of the procedure.

s = ['c','o','d','e','s','p','e','e','d','y'] # initialize the list
dict1 = {} 
for key in s: 
    dict1[key] = dict1.get(key, 0) + 1
    
v,k = list(dict1.values()),list(dict1.keys())
product = []
for i,j in zip(v,k):
    product.append(i*j)
print(sorted(product))

OUTPUT:

['c', 'dd', 'eee', 'o', 'p', 's', 'y']

Method 3:

This is the most suggested method for finding the frequency of the characters in the list

  • Here firstly import the counter from collections
  • from collections import Counter
  • After that apply the previous procedure to find the output.

 

Below the implementation of the procedure.

from collections import Counter 

s = ['c','o','d','e','s','p','e','e','d','y'] # initialize the list

dict1 = Counter(s) # using the collections.counter 

                   # to get count of each character in list
v,k = list(dict1.values()),list(dict1.keys())
product = []
for i,j in zip(v,k):
    product.append(i*j)
print(sorted(product))

OUTPUT:

['c', 'dd', 'eee', 'o', 'p', 's', 'y']

Thanks for visiting codespeedy. I hope it helps you.

Leave a Reply

Your email address will not be published. Required fields are marked *