In the Python dictionary, can one key hold more than one value?

A Python dictionary stores key-value pairs where each key maps to a single value. However, you can store multiple values for one key by using containers like lists, tuples, or sets as the value. This article explores five practical methods to achieve this.

What is a Dictionary in Python?

A dictionary is Python's built-in data structure that stores key-value pairs dynamically. It's mutable and can be thought of as an associative array where each element is associated with its key value.

Can One Key Hold More Than One Value?

Yes! While dictionaries store single values per key by default, you can store multiple values by using containers like lists, sets, or tuples as the value object. Here are five effective methods to accomplish this ?

Method 1: Using List Assignment with += Operator

Initialize keys with single-element lists, then add more values using the += operator ?

shop = {'available': ['bread'], 'not available': ['eggs'], 'excess': ['milk']}
print('Initial shop list:')
print(shop)

shop['available'] += ['fish']
shop['available'] += ['cheese', 'butter']
print('\nAfter adding items:')
print(shop)
Initial shop list:
{'available': ['bread'], 'not available': ['eggs'], 'excess': ['milk']}

After adding items:
{'available': ['bread', 'fish', 'cheese', 'butter'], 'not available': ['eggs'], 'excess': ['milk']}

Method 2: Using the extend() Function

The extend() method adds multiple elements to the existing list value ?

shop = {'available': ['bread'], 'not available': ['eggs'], 'excess': ['milk']}
print('Initial shop list:')
print(shop)

shop['available'].extend(['fish'])
shop['available'].extend(['cheese', 'butter'])
print('\nAfter extending:')
print(shop)
Initial shop list:
{'available': ['bread'], 'not available': ['eggs'], 'excess': ['milk']}

After extending:
{'available': ['bread', 'fish', 'cheese', 'butter'], 'not available': ['eggs'], 'excess': ['milk']}

Method 3: Using the append() Function for Nested Lists

The append() method creates sublists within the main list, increasing data structure depth ?

shop = {'available': ['bread'], 'not available': ['eggs'], 'excess': ['milk']}
print('Initial shop list:')
print(shop)

shop['available'].append(['fish'])
shop['available'].append(['cheese', 'butter'])
print('\nAfter appending sublists:')
print(shop)

# Accessing nested values
print('\nFirst sublist item:', shop['available'][1][0])
print('Second sublist:', shop['available'][2])
Initial shop list:
{'available': ['bread'], 'not available': ['eggs'], 'excess': ['milk']}

After appending sublists:
{'available': ['bread', ['fish'], ['cheese', 'butter']], 'not available': ['eggs'], 'excess': ['milk']}

First sublist item: fish
Second sublist: ['cheese', 'butter']

Method 4: Using the setdefault() Method

The setdefault() method creates a new key if it doesn't exist, or returns the existing value ?

shop = {'available': ['bread'], 'not available': ['eggs'], 'excess': ['milk']}
print('Initial shop list:')
print(shop)

# Add to existing key
shop.setdefault('available', []).extend(['fish'])

# Create new key
shop.setdefault('restocked', []).extend(['apples', 'oranges'])
print('\nAfter using setdefault:')
print(shop)
Initial shop list:
{'available': ['bread'], 'not available': ['eggs'], 'excess': ['milk']}

After using setdefault:
{'available': ['bread', 'fish'], 'not available': ['eggs'], 'excess': ['milk'], 'restocked': ['apples', 'oranges']}

Method 5: Using defaultdict() with Lists

The defaultdict from the collections module automatically creates missing keys with default values ?

from collections import defaultdict

# Create defaultdict that creates empty lists for new keys
shop_dict = defaultdict(list)

# Add values to keys
shop_items = [("shop1", "bread"), ("shop2", "milk"), ("shop1", "cheese"), ("shop3", "chips")]

for shop, item in shop_items:
    shop_dict[shop].append(item)

# Add more items
shop_dict['shop1'].extend(['coke', 'biscuits'])
shop_dict['shop2'].append('eggs')

print('Shop inventory:')
print(dict(shop_dict))
Shop inventory:
{'shop1': ['bread', 'cheese', 'coke', 'biscuits'], 'shop2': ['milk', 'eggs'], 'shop3': ['chips']}

Comparison of Methods

Method Best For Creates Nested Structure?
+= operator Simple list concatenation No
extend() Adding multiple elements at once No
append() Creating nested sublists Yes
setdefault() Handling missing keys safely No
defaultdict() Automatic key creation No

Conclusion

Python dictionaries can store multiple values per key using containers like lists. Use extend() for flat lists, append() for nested structures, and defaultdict() for automatic key handling.

Updated on: 2026-03-27T00:39:38+05:30

57K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements