How to Concatenate dictionary value lists in Python

Dictionary value concatenation involves combining lists that are stored as values in a Python dictionary into a single list. This is useful when you need to aggregate data from multiple dictionary entries or flatten nested list structures.

Understanding Dictionary Value Lists

When working with dictionaries containing lists as values, you often need to merge these lists into one comprehensive list ?

# Example dictionary with list values
data = {
    "fruits": ["apple", "banana"],
    "vegetables": ["carrot", "spinach"],
    "grains": ["rice", "wheat"]
}
print("Original dictionary:", data)
Original dictionary: {'fruits': ['apple', 'banana'], 'vegetables': ['carrot', 'spinach'], 'grains': ['rice', 'wheat']}

Method 1: Using Loop with extend()

The most straightforward approach uses a loop to iterate through dictionary values and extend a result list ?

def concatenate_with_loop(dictionary):
    result = []
    for values in dictionary.values():
        result.extend(values)
    return result

data = {
    "group_a": [1, 2, 3],
    "group_b": [4, 5, 6],
    "group_c": [7, 8, 9]
}

concatenated = concatenate_with_loop(data)
print("Concatenated list:", concatenated)
Concatenated list: [1, 2, 3, 4, 5, 6, 7, 8, 9]

Method 2: Using itertools.chain.from_iterable()

The itertools.chain.from_iterable() function provides a more efficient way to flatten dictionary value lists ?

import itertools

def concatenate_with_chain(dictionary):
    return list(itertools.chain.from_iterable(dictionary.values()))

data = {
    "category1": ["red", "blue"],
    "category2": ["green", "yellow"],
    "category3": ["black", "white"]
}

concatenated = concatenate_with_chain(data)
print("Concatenated list:", concatenated)
Concatenated list: ['red', 'blue', 'green', 'yellow', 'black', 'white']

Method 3: Using List Comprehension

List comprehension offers a concise Pythonic approach to flatten dictionary value lists ?

def concatenate_with_comprehension(dictionary):
    return [item for sublist in dictionary.values() for item in sublist]

data = {
    "scores_team1": [85, 92, 78],
    "scores_team2": [88, 95, 82],
    "scores_team3": [90, 87, 91]
}

concatenated = concatenate_with_comprehension(data)
print("All scores:", concatenated)
print("Total scores:", len(concatenated))
All scores: [85, 92, 78, 88, 95, 82, 90, 87, 91]
Total scores: 9

Comparison of Methods

Method Readability Performance Memory Usage
Loop with extend() High Good Efficient
itertools.chain() Medium Best Most efficient
List comprehension High Good Efficient

Handling Edge Cases

When concatenating dictionary value lists, consider empty lists and mixed data types ?

import itertools

# Dictionary with empty lists and mixed types
data = {
    "numbers": [1, 2, 3],
    "empty": [],
    "strings": ["a", "b"],
    "mixed": [4, "c", 5]
}

# Using chain method (handles empty lists automatically)
result = list(itertools.chain.from_iterable(data.values()))
print("Concatenated with empty lists:", result)
print("Total elements:", len(result))
Concatenated with empty lists: [1, 2, 3, 'a', 'b', 4, 'c', 5]
Total elements: 8

Conclusion

Use itertools.chain.from_iterable() for best performance with large datasets. Use list comprehension for readable, Pythonic code. Use the loop method when you need additional processing during concatenation.

Updated on: 2026-03-27T16:21:09+05:30

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements