Python extend for a dictionary

Python extend for a dictionary


Latest Python Standard Library Documentation

A beautiful gem in this closed question:

The oneliner way, altering neither of the input dicts, is

basket = dict(basket_one, **basket_two)

Learn what **basket_two (the **) means here.

In case of conflict, the items from basket_two will override the ones from basket_one. As one-liners go, this is pretty readable and transparent, and I have no compunction against using it any time a dict thats a mix of two others comes in handy (any reader who has trouble understanding it will in fact be very well served by the way this prompts him or her towards learning about dict and the ** form;-). So, for example, uses like:

x = mungesomedict(dict(adict, **anotherdict))

are reasonably frequent occurrences in my code.

Originally submitted by Alex Martelli

Note: In Python 3, this will only work if every key in basket_two is a string.

Python extend for a dictionary

Have you tried using dictionary comprehension with dictionary mapping:

a = {a: 1, b: 2}
b = {c: 3, d: 4}

c = {**a, **b}
# c = {a: 1, b: 2, c: 3, d: 4}

Another way of doing is by Using dict(iterable, **kwarg)

c = dict(a, **b)
# c = {a: 1, b: 2, c: 3, d: 4}

In Python 3.9 you can add two dict using union | operator

# use the merging operator |
c = a | b
# c = {a: 1, b: 2, c: 3, d: 4}

Leave a Reply

Your email address will not be published. Required fields are marked *