Define Defaults for Dictionaries
Default without updating the dict:
mydict = {}
name = mydict.get("name", "Holger")
print(name)
print(mydict)
# OUT:
# Holger
# {}
Default and also updating dict:
mydict = {}
name = mydict.setdefault("name", "Holger")
print(name)
print(mydict)
# OUT:
# Holger
# {'name': 'Holger'}
Default all keys with same value using collections.defaultdict()
:
(especially useful in combination with lists)
from collections import defaultdict
moves = [
("Bart", "rock"),
("Lisa", "paper"),
("Bart", "rock"),
("Millhouse", "scissors"),
("Bart", "rock"),
("Millhouse", "paper"),
]
person_moves = defaultdict(list)
for name, move in moves:
person_moves[name].append(move)
print(person_moves)
# OUT:
# defaultdict(<class 'list'>, {
# 'Bart': ['rock', 'rock', 'rock'],
# 'Lisa': ['paper'],
# 'Millhouse': ['scissors', 'paper']
# })