Рубрики
Без рубрики

Python: dict setdefault и getDefault

В этом посте мы обсудим SetDefault и GetDefault Дикта в Python. Это два удобных проги … Tagged с Python.

В этом посте мы обсудим 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”