w3resource

Python: Groups the elements of a given list based on the given function


69. Group Elements of a List Based on a Function

Write a Python program to group the elements of a given list based on the given function.

  • Use collections.defaultdict to initialize a dictionary.
  • Use fn in combination with a for loop and dict.append() to populate the dictionary.
  • Use dict() to convert it to a regular dictionary.

Sample Solution:

Python Code:

# Import the 'defaultdict' class from the 'collections' module.
from collections import defaultdict
# Import the 'floor' function from the 'math' module.
from math import floor

# Define a function 'test' that takes a list 'lst' and a function 'fn' as arguments.
def test(lst, fn):
  # Create a 'defaultdict' object 'd' with a default value of an empty list.
  d = defaultdict(list)

  # Iterate through the elements 'el' in the input list 'lst'.
  for el in lst:
    # Apply the function 'fn' to the current element 'el' to determine the group key.
    key = fn(el)

    # Append the current element 'el' to the list associated with the calculated key.
    d[key].append(el)

  # Convert the 'defaultdict' 'd' back to a regular dictionary and return it.
  return dict(d)

# Define a list of numbers 'nums' and a function 'floor' for rounding down.
nums = [7, 23, 3.2, 3.3, 8.4]

# Print the original list and specify the function used for grouping.
print("Original list & function:")
print(nums, " Function name: floor:")

# Call the 'test' function with 'nums' and the 'floor' function as arguments,
# and print the result of grouping based on the 'floor' function.
print("Group the elements of the said list based on the given function:")
print(test(nums, floor))
print("\n")

# Define a list of colors 'colors'.
colors = ['Red', 'Green', 'Black', 'White', 'Pink']

# Print the original list and specify the function used for grouping.
print("Original list & function:")
print(colors, " Function name: len:")

# Call the 'test' function with 'colors' and the 'len' function as arguments,
# and print the result of grouping based on the 'len' function.
print("Group the elements of the said list based on the given function:")
print(test(colors, len)) 

Sample Output:

Original list & function:
[7, 23, 3.2, 3.3, 8.4]  Function name: floor:
Group the elements of the said list based on the given function:
{7: [7], 23: [23], 3: [3.2, 3.3], 8: [8.4]}


Original list & function:
['Red', 'Green', 'Black', 'White', 'Pink']  Function name: len:
Group the elements of the said list based on the given function:
{3: ['Red'], 5: ['Green', 'Black', 'White'], 4: ['Pink']}

Flowchart:

Flowchart: Groups the elements of a given list based on the given function.

For more Practice: Solve these Related Problems:

  • Write a Python program to group elements of a list by applying the floor function and output a dictionary of groups.
  • Write a Python program to group words from a list by their length using a lambda function and dictionary comprehension.
  • Write a Python program to cluster list elements based on their remainder when divided by a given number.
  • Write a Python program to use itertools.groupby to group sorted list elements by a custom function.

Go to:


Previous: Write a Python program to combines two or more dictionaries, creating a list of values for each key.
Next: Write a Python program to map the values of a given list to a dictionary using a function, where the key-value pairs consist of the original value as the key and the result of the function as the value.

Python Code Editor:

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.