Python Dictionary

Definition

A Python dictionary is a collection of "key"and"value"pairs.

Dictionaries are "unordered", "indexed", "mutable" i.e. can be changed after their creation, and are enclosed with "curly brackets {}".

These are "mapping" type data-type in Python.

Keys and values are separated by "colon(:)" and key-value pairs are separated using "comma(,)".

Keys

Keys can be a "single element" only and should be immutable Python objects i.e. "numbers", "strings", and "tuples".

Values

A value in a dictionary can be any Python object like "list", "tuple", "number", "string", and even the "dictionary".

Creating a Dictionary

Example

mydict = {
    "key1" : "Value1",
    "key2" : "Value2",
    "key3" : "Value3"
}
print(mydict)
print(type(mydict))

Output

{'key1': 'Value1', 'key2': 'Value2', 'key3': 'Value3'}
<class 'dict'>

dict() method

We can also use "dict()"method to create a dictionary.

Example

myDict = dict(key1="value1", key2="value2",key3="value3")
print(type(myDict))
print(myDict)

Output

<class 'dict'>
{'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}

Accessing values

We can access dictionary values using a "key name" or using "get()" method.

Example

mydict = {
    "key1" : "Value1",
    "key2" : "Value2",
    "key3" : "Value3"
}
print(mydict)
print(mydict["key1"])
print(mydict.get("key2"))

Output

{'key1': 'Value1', 'key2': 'Value2', 'key3': 'Value3'}
Value1
Value2

Updating Dictionary

We can add more key-value pairs in a dictionary, change the value of a key, and can also take value from the user at run time.

Use "dictname[keyname] = value" to add or change a key-value pair.

If the keyname does not exist then a new key-value pair will be created and added to the dictionary else the value of the key will be changed.

We can also take a key’s value from the user at run time of the Python code using "input()"function.

Example

mydict = {
    "key1" : "Value1",
    "key2" : "Value2",
    "key3" : "Value3"
}
print(mydict)
mydict["newkey1"] = "newvalue1"
mydict["key1"] = "updatedvalue1"
print(mydict)
mydict["userinput"] = input("Enter value: ")
print(mydict)

Output

{'key1': 'Value1', 'key2': 'Value2', 'key3': 'Value3'}
{'key1': 'updatedvalue1', 'key2': 'Value2', 'key3': 'Value3', 'newkey1': 'newvalue1'}
Enter value: myinputvalue
{'key1': 'updatedvalue1', 'key2': 'Value2', 'key3': 'Value3', 'newkey1': 'newvalue1', 'userinput': 'myinputvalue'}

We can also use "update()" method to add many key-value pairs at one time.

Example

mydict = {
    "key1" : "Value1",
    "key2" : "Value2",
    "key3" : "Value3"
}
print(mydict)
mydict.update({"key4":"value4", "key5":"value5", "key6":"value6"})
print(mydict)

Output

{'key1': 'Value1', 'key2': 'Value2', 'key3': 'Value3'}
{'key1': 'Value1', 'key2': 'Value2', 'key3': 'Value3', 'key4': 'value4', 'key5': 'value5', 'key6': 'value6'}

Dictionary Length

We can determine the number of key-value pairs using "len()" method.

Example

mydict = {
    "key1" : "Value1",
    "key2" : "Value2",
    "key3" : "Value3"
}
print(len(mydict))

Output

3

Checking a Key in Dictionary

We can check whether a key-value pair exists in a dictionary using in keyword "in" Python.

Example

mydict = {
    "key1" : "Value1",
    "key2" : "Value2",
    "key3" : "Value3"
}
print("key1" in mydict)
print("key2" in mydict)
print("key5" in mydict)

Output

True
True
False

del keyword

Use "del" keyword to delete a key-value pair in a dictionary.

Syntax– del dictname["keyname"]

Note– this keyword can also be used to delete the entire dictionary.

Syntax– del dictname

Example

mydict = {
    "key1" : "Value1",
    "key2" : "Value2",
    "key3" : "Value3"
}
print(mydict)
del mydict["key1"]
print(mydict)
del mydict
print(mydict)

Output

{'key1': 'Value1', 'key2': 'Value2', 'key3': 'Value3'}
{'key2': 'Value2', 'key3': 'Value3'}
Traceback (most recent call last):
  File "f:/vscode/python/dicttutorial.py", line 10, in <module>
    print(mydict)
NameError: name 'mydict' is not defined

pop() method

We can also use "pop()" method to remove any key-value pair using the specified key name.

Example

mydict = {
    "key1" : "Value1",
    "key2" : "Value2",
    "key3" : "Value3"
}
print(mydict)
mydict.pop("key1")
print(mydict)
mydict.pop("key2")
print(mydict)

Output

{'key1': 'Value1', 'key2': 'Value2', 'key3': 'Value3'}
{'key2': 'Value2', 'key3': 'Value3'}
{'key3': 'Value3'}

popitem() method

This method simply removes the last key-value pair present in the dictionary.

Note– In versions before 3.7, it was used to remove a random key-value pair.

Example

mydict = {
    "key1" : "Value1",
    "key2" : "Value2",
    "key3" : "Value3"
}
print(mydict)
mydict.popitem()
print(mydict)
mydict.popitem()
print(mydict)

Output

{'key1': 'Value1', 'key2': 'Value2', 'key3': 'Value3'}
{'key1': 'Value1', 'key2': 'Value2'}
{'key1': 'Value1'}

clear() method

If we want to make our dictionary completely empty then we can use this method.

This method will remove all the key-value pairs from the dictionary but the name of the dictionary will be available as it was before.

Example

mydict = {
    "key1" : "Value1",
    "key2" : "Value2",
    "key3" : "Value3"
}
print(mydict)
mydict.clear()
print(mydict)

Output

{'key1': 'Value1', 'key2': 'Value2', 'key3': 'Value3'}
{}

Copy a Dictionary

We can directly assign a dictionary to any variable using the assignment operator"(=)".

But this will not be called as copying a dictionary because here we are only referring to the old dictionary using the assignment operator like we simply assign some value to any variable"a = 5".

So, if we make any changes in the previous dictionary, then we will see those changes in our new copied dictionary.

Example

mydict = {
    "key1" : "Value1",
    "key2" : "Value2",
    "key3" : "Value3"
}
newdict = mydict
print(mydict)
print(newdict)
mydict["key1"] = "newvalue"
print(mydict)
print(newdict)

Output

{'key1': 'Value1', 'key2': 'Value2', 'key3': 'Value3'}
{'key1': 'Value1', 'key2': 'Value2', 'key3': 'Value3'}
{'key1': 'newvalue', 'key2': 'Value2', 'key3': 'Value3'}
{'key1': 'newvalue', 'key2': 'Value2', 'key3': 'Value3'}

Use "copy()" method if you want to create a new copied dictionary.

Example

mydict = {
    "key1" : "Value1",
    "key2" : "Value2",
    "key3" : "Value3"
}
newdict = mydict.copy()
print(newdict)
mydict["key1"] = "newvalue"
print(mydict)
print(newdict) # newdict will not be effected

Output

{'key1': 'Value1', 'key2': 'Value2', 'key3': 'Value3'}
{'key1': 'newvalue', 'key2': 'Value2', 'key3': 'Value3'}
{'key1': 'Value1', 'key2': 'Value2', 'key3': 'Value3'}