В этом посте мы обсудим Dict’s установить по умолчанию
и getDefault
в Python.
Это две удобные программирующие идиомы в Python.
getDefault
Когда мы получаем значение от дикта, если ключ не существует в DICT, A Нет
будет возвращен.
dict.get(key, default = None)
Второй параметр для GET – значение по умолчанию. Вот пример:
dict = { 'Name': 'Nick', 'Age': 23 } print "Value : %s" % dict.get('Age') print "Value : %s" % dict.get('Education', "Master") # => Value : 23 # => Value : Master
установить по умолчанию
Предположим, у нас есть дикт, который записывает результат экзамена:
table = { "Nick" : "A", "Ada" : "B", "Mike": "B", "Leo": "C", "Sandy" : "D" }
Мы хотим преобразовать его в дикт с Оценка -> Список имен
чтобы мы могли проверить, сколько учеников в каждом классе. Результатом будет:
{ "A" : ["Nick"], "B" : ["Ada", "Mike"], "C" : ["Leo"], "D" : ["Sandy"] }
Новичок может написать код таким образом:
table = { "Nick" : "A", "Ada" : "B", "Mike": "B", "Leo": "C", "Sandy" : "D" } result = {} for name, score in table.items(): if score not in result: result[score] = [name] else: result[score].append(name) print(result) # => {'A': ['Nick'], 'C': ['Leo'], 'B': ['Mike', 'Ada'], 'D': ['Sandy']}
В каждой итерации нам нужно проверить, существует ли новый ключ в результате.
Более питонический способ использует установить по умолчанию
:
table = { "Nick" : "A", "Ada" : "B", "Mike": "B", "Leo": "C", "Sandy" : "D" } result = {} for name, score in table.items(): g = result.setdefault(score, []) g.append(name) print(result) # => {'A': ['Nick'], 'C': ['Leo'], 'B': ['Mike', 'Ada'], 'D': ['Sandy']}
Код может быть более проще, если мы используем DefaultDict
, но результатом является объект DefaultDict:
table = { "Nick" : "A", "Ada" : "B", "Mike": "B", "Leo": "C", "Sandy" : "D" } from collections import defaultdict result = defaultdict(list) for name, score in table.items(): result[score].append(name) # all keys have a default already print(type(result)) print(result) # =># => defaultdict( , {'A': ['Nick'], 'C': ['Leo'], 'B': ['Mike', 'Ada'], 'D': ['Sandy']})
Пост Python: Dict SetDefault и GetDefault появился первым на Кошка кодера Анкет
Оригинал: “https://dev.to/snj/python-dict-setdefault-and-getdefault-4756”