Movatterモバイル変換


[0]ホーム

URL:


Python Tutorial

Python itertools.groupby() Function



The Pythonitertools.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 −

  • iterable: The iterable whose elements will be grouped.
  • key (optional): A function that determines the key for each group. If not provided, the elements themselves are used as keys.

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 itertoolsnumbers = [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 itertoolsdef 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 itertoolsdata = [   {"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 itertoolsdef 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
Print Page
Advertisements

[8]ページ先頭

©2009-2025 Movatter.jp