A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://www.tutorialspoint.com/python/python_itertools_groupby_function.htm below:

Python itertools.groupby() Function

Python itertools.groupby() Function

The Python itertools.groupby() function is used to group consecutive elements in an iterable that have the same key. It returns an iterator that produces key-value pairs, where the key is derived from a function, and the value is an iterator containing grouped elements.

This function is commonly used for categorizing data into groups based on a certain property.

Syntax

Following is the syntax of the Python itertools.groupby() function −

itertools.groupby(iterable, key=None)
Parameters

This function accepts the following parameters −

Return Value

This function returns an iterator that yields pairs of a key and an iterator of grouped elements.

Example 1

Following is an example of the Python itertools.groupby() function. Here, we group consecutive identical numbers in a list −

import itertools

numbers = [1, 1, 2, 2, 2, 3, 4, 4, 5]
for key, group in itertools.groupby(numbers):
   print(key, list(group))

Following is the output of the above code −

1 [1, 1]
2 [2, 2, 2]
3 [3]
4 [4, 4]
5 [5]
Example 2

Here, we group words using the itertools.groupby() function based on their first letter −

import itertools

def first_letter(word):
   return word[0]

words = ["apple", "apricot", "banana", "blueberry", "cherry", "cranberry"]
for key, group in itertools.groupby(words, key=first_letter):
   print(key, list(group))

Output of the above code is as follows −

a ['apple', 'apricot']
b ['banana', 'blueberry']
c ['cherry', 'cranberry']
Example 3

Now, we use itertools.groupby() function to group a list of dictionaries based on a shared attribute −

import itertools

data = [
   {"category": "fruit", "name": "apple"},
   {"category": "fruit", "name": "banana"},
   {"category": "vegetable", "name": "carrot"},
   {"category": "vegetable", "name": "broccoli"}
]

def get_category(item):
   return item["category"]

sorted_data = sorted(data, key=get_category)
for key, group in itertools.groupby(sorted_data, key=get_category):
   print(key, list(group))

The result obtained is as shown below −

fruit [{'category': 'fruit', 'name': 'apple'}, {'category': 'fruit', 'name': 'banana'}]
vegetable [{'category': 'vegetable', 'name': 'carrot'}, {'category': 'vegetable', 'name': 'broccoli'}]
Example 4

We can also use the itertools.groupby() function to group numbers as even or odd −

import itertools

def is_even(n):
   return "Even" if n % 2 == 0 else "Odd"

numbers = [1, 2, 2, 3, 4, 5, 6, 6, 7, 8]
for key, group in itertools.groupby(numbers, key=is_even):
   print(key, list(group))

The result produced is as follows −

Odd [1]
Even [2, 2]
Odd [3]
Even [4]
Odd [5]
Even [6, 6]
Odd [7]
Even [8]

python_modules.htm


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4