defaultdict
"Standart sözlük, bir değer almak ve değer yoksa bir varsayılan oluşturmak için setdefault () yöntemini içerir. Aksine, defaultdict
arayanın kap başlatıldığında varsayılanı (döndürülecek değeri) belirtmesini sağlar."
tarafından tanımlanan Doug Hellmann içinde Örnek tarafından Python Standart kütüphane
Defaultdict nasıl kullanılır
İçe aktarma varsayılan metni
>>> from collections import defaultdict
Varsayılan imzayı başlat
Geçerek başlat
ilk argümanı olarak çağrılabilir (zorunlu)
>>> d_int = defaultdict(int)
>>> d_list = defaultdict(list)
>>> def foo():
... return 'default value'
...
>>> d_foo = defaultdict(foo)
>>> d_int
defaultdict(<type 'int'>, {})
>>> d_list
defaultdict(<type 'list'>, {})
>>> d_foo
defaultdict(<function foo at 0x7f34a0a69578>, {})
** ikinci argüman olarak kwargs (isteğe bağlı)
>>> d_int = defaultdict(int, a=10, b=12, c=13)
>>> d_int
defaultdict(<type 'int'>, {'a': 10, 'c': 13, 'b': 12})
veya
>>> kwargs = {'a':10,'b':12,'c':13}
>>> d_int = defaultdict(int, **kwargs)
>>> d_int
defaultdict(<type 'int'>, {'a': 10, 'c': 13, 'b': 12})
Nasıl çalışır
Standart sözlüğün alt sınıfı olduğu gibi, aynı işlevleri yerine getirebilir.
Ancak bilinmeyen bir anahtarın geçilmesi durumunda hata yerine varsayılan değeri döndürür. Örneğin:
>>> d_int['a']
10
>>> d_int['d']
0
>>> d_int
defaultdict(<type 'int'>, {'a': 10, 'c': 13, 'b': 12, 'd': 0})
Varsayılan değeri değiştirmek istediğinizde default_factory:
>>> d_int.default_factory = lambda: 1
>>> d_int['e']
1
>>> d_int
defaultdict(<function <lambda> at 0x7f34a0a91578>, {'a': 10, 'c': 13, 'b': 12, 'e': 1, 'd': 0})
veya
>>> def foo():
... return 2
>>> d_int.default_factory = foo
>>> d_int['f']
2
>>> d_int
defaultdict(<function foo at 0x7f34a0a0a140>, {'a': 10, 'c': 13, 'b': 12, 'e': 1, 'd': 0, 'f': 2})
Sorudaki Örnekler
örnek 1
İnt default_factory olarak geçtiği için, bilinmeyen herhangi bir anahtar varsayılan olarak 0 değerini döndürür.
Dize döngü içinde iletilirken, d'deki bu alfabe sayısını artıracaktır.
>>> s = 'mississippi'
>>> d = defaultdict(int)
>>> d.default_factory
<type 'int'>
>>> for k in s:
... d[k] += 1
>>> d.items()
[('i', 4), ('p', 2), ('s', 4), ('m', 1)]
>>> d
defaultdict(<type 'int'>, {'i': 4, 'p': 2, 's': 4, 'm': 1})
ÖRNEK 2
Bir liste default_factory olarak geçtiği için, bilinmeyen (var olmayan) anahtarlar varsayılan olarak [] (yani liste) döndürür.
Şimdi tuples listesi döngüde geçtiği için, değeri d [color]
>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
>>> d = defaultdict(list)
>>> d.default_factory
<type 'list'>
>>> for k, v in s:
... d[k].append(v)
>>> d.items()
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]
>>> d
defaultdict(<type 'list'>, {'blue': [2, 4], 'red': [1], 'yellow': [1, 3]})
default_factory = None
. Bu soruya bakın .